Приоритеты учитываются, ошибка в другом, но суть не в этом. Я просто хотел показать, что вы не ушли от использования объектов кода. То, что вы условие (ListIterator == 3 && Direction == 1) обозначили одной переменной C2, не означает, что вы от нее избавились. И программа все равно требует знаний в области программирования, несмотря на то, что часть переменных названа русскими буквами.
Вы неоднократно говорите в комментах что-то в стиле «это еще не реализовано» и «это будет потом». Я же вам предлагал в прошлой статье сделать сначала законченный пример приложения типа игры в дурака и посмотреть на объем и наглядность получившегося кода. При реализации этой змейки на обычном языке программирования объем кода в 3 раза меньше (у меня получилось 60 строк с отступами и комментариями). Зачем показывать промежуточные примеры, да еще и требующие отдельного интерпретатора команд?
Кстати, а зачем вы сделали отдельный интерпретатор? Не потому ли, что с такой системой триггеров очистить участок экрана AxB это не самая простая задача?)
Вы знаете, простой заменой регулярками из этой программы можно получить валидный код на PHP. Это значит, что ваша программа вполне себе императивна, и замена "=" на «устанавливать» не дает никаких преимуществ. К тому же абстракция протекает, что выражается в виде технической конструкции для языка Python «преобразовывать (? что элемент? как-что число,? во-что Temp? как-что буква).». У вас получился просто еще один язык программирования, никаким дальнейшим развитием языка императивность не исправить.
Если кому интересно
Заменяем, правим начало и конец, добавляем переводы строк, добавляем обвязку для запуска. При реализации рантайма по-быстрому «в лоб» происходит зацикливание в процедуре СP001 (триггер на изменение ListIterator) на строчке «set_value($ListIterator, 'значение', $ListIterator['значение'] + 1);». После добавления флага для запрещения срабатывания триггеров внутри триггеров программа выдает строку «CLR[13] SET[14] INIT[10:10] SET[A1] SET[A2] SET[A3] REFR[] ».
Не специалист в 3D графике, но мне кажется, можно сделать так. На сервере делать не весь рендер, а только базовый просчет — чтобы z-буфер заполнить. То есть по сути одноцветные стены без текстур и прочего. Игрок — контур из нескольких точек. Если хотя бы одна точка проецируется на камеру другого игрока, значит первого игрока видно из-за стены. Только после этого на клиент второго отправляются координаты первого. Нормальный рендер производится на клиенте, как обычно.
Заниматься чем-то, нарушающим священное волеизъявление здешних господ на контент, который и только который они хотят видеть вокруг себя… уже есть оглядывающиеся владельцы сайтов, недополучающие до 30% денег с рекламы…
Никогда не понимал такую логику. Извините, мне какая разница, как владелец деньги зарабатывает? И почему я должен ему в этом помогать?
Сайт поддержать? Обычно есть альтернативы. Почему сразу на другой сайт не пошел? Да потому что этот сайт в поиске первым был, а тот десятым. На тех сайтах, у которых аналогов нет, и реклама особо не мешает.
На большинство сайтов я захожу через выдачу поисковика по вполне определенному запросу. Мне не нужна информация, не соответствующая этому запросу, и к тому же я не собираюсь в момент просмотра сайта что-то покупать или подписываться на какие-то услуги. Если вдруг понадобится, я поищу информацию об этом отдельно, сравню варианты и выберу то, что мне больше подойдет по цене/качеству.
Навязчивая реклама это хуже спама. Спам это реклама, предлагаемая без получения согласия, а тут реклама предлагается несмотря на явное запрещение. Я отключил рекламу, значит она в данный момент меня не интересует. Мне кажется, стоит бороться с такими сайтами аналогичными методами.
Отдельный вопрос это содержимое рекламы. Допустим, я зашел на некоторый сайт посмотреть новую серию сериала за чашечкой чая, а там надпись «ШОК! Грибок можно вылечить простым средством...». С фотографиями и анимацией. Пока что блокировщик помогает, но если не будет, я просто не буду посещать такой сайт.
Я разделяю общее мнение, что реклама не должна быть навязчивой. И это не отдельный вопрос, а прямая причина. Хорошие методы обхода блокировки будут применять не только «хорошие, нужные и контенто-богатые сайты, у которых реклама — единственный источник дохода», но и все остальные. Так что в целом ситуация не изменится, разве что технические решения будут сложнее.
Пусть реклама висит себе сбоку, пока не мешает. А еще было бы неплохо, если бы она показывалась, к примеру, 1 раз из 10. Чтобы не отвлекать от основного контента. Тогда можно было бы и глянуть иногда, что там интересного есть. Но это уже так, мелочи и хотелки…
Также хотел бы написать по технической части. Зачем писать статью с примером, который нельзя использовать? Раз уж подняли такую тему, то показали бы сразу рабочее решение с описанием всех нюансов, кому надо допилит сам. Тем более что есть другие проблемы — скрытие средствами CSS, блокировка баннеров определенного размера. Еще бывают рекламные скрипты, которые URL генерируют кодом.
Не автор коммента, но попробую рассказать, зачем я ушел из C++ на PHP.
Просто не было работы на C++ в моем городе. Совсем. И в соседних городах тоже редко появлялись. Да и опыт обычно требовался. Зато на PHP вакансий было гораздо больше. После универа я знал только C++, писал на нем все лабы и курсовые. Еще знал ассемблер, но его можно не считать. Помаявшись полгода по небольшим халтуркам, решил изучить веб-программирование. Поначалу было непривычно, потом оказалось, что это очень удобно, когда строки обрабатываются на уровне языка. Когда не надо преобразовывать числа в строки и обратно вручную. Или следить за границами массивов и правильным доступом в память. А через HTML и CSS закодировать интерфейс в большинстве случаев проще, чем на C++ — попробуйте через device context нарисовать на форме поле для тетриса. Но знание C++ дало мне понимание, как программа работает внутри — например, что сравнение строк это не то же самое, что сравнение целочисленных переменных, и оно требует дополнительных ресурсов, или как работает передача по ссылке и чем она отличается от передачи по значению.
Hello world на обоих этих языках написать несложно, а вот вывести табличку с разнородными данными из БД и внизу еще строчку «Итого» на PHP будет попроще.
Cамомодификация редко используется не потому, что такие программы сложно писать, а потому, что их сложно понимать (и, как следствие, поддерживать). Для вирусов или обфускаторов это цель, для упаковщиков программного кода техническая необходимость. Можете привести примеры, когда самомодификация упрощает написание и поддержку кода?
Любая интеллектуальная система подразумевает наличие процесса обучения… Такое изменение поведения должно выполнятся специальными средствами метапрограммирования и в конечном счете приводит к внесению изменений в исходный код интеллектуальной программы.
Не знаю вашей специализации, возможно вы хороший специалист в этой области, но насколько мне известно, экспертные системы или распознающие нейросети не меняют своего исходного кода в процессе обучения. Меняется реакция программы на данные, но движок остается тот же.
и делает практически невозможным изменение программой самой себя
И хорошо, что делает. Самомодифицирующаяся программа еще хуже, чем куча goto.
Во-первых, дополнительное условие if (s[i]==c) нельзя добавить в произвольное место программы, а только внутрь цикла FOR.
И хорошо, что нельзя. Где его потом искать в произвольном месте среди сотни тысяч строк кода.
Во-вторых, поскольку внутри цикла FOR теперь больше одной инструкции, его нужно дополнить фигурными скобками.
Хороший аргумент, чтобы начать писать в другой парадигме. Кстати, некоторые стандарты кодирования обязывают заключать в фигурные скобки даже один оператор.
В-третьих, порядок добавляемых инструкций не является произвольным. Их перестановка приведет к некорректному поведению программы
Перестановка инструкций в теле обработчика события тоже приведет к некорректному поведению программы.
И тогда, в определенный момент запустится ее обработчик, который будет смотреть «есть ли у меня козырь?»…
Только практика покажет, придется проблему решать, или лучше игнорировать ...
Кстати, почему вы не попробовали реализовать свою идею на практике? Возьмите игру в дурака, или к примеру тетрис, и попробуйте реализовать на javascript, в нем есть средства для работы с событиями и их обработчиками. Результат опубликуете в статье. Предполагаю, что первая проблема, с которой вы столкнетесь — зацикливание событий change, когда в обработчике изменения одной переменной меняется вторая, а в обработчике второй первая.
Мне кажется, большинство таких статей и исследований двигаются немного не в том направлении. Для создания ИИ нет большого смысла изучать, чем отличается интеллект шимпанзе от интеллекта человека. Даже не нужно стремиться создать интеллект, близкий к человеческому. Дикие животные вполне самостоятельно живут в лесах, добывают пропитание, причем обучаются этому тоже самостоятельно. Ни одна нейронная сеть на данный момент на такое не способна.
На мой взгляд, в статье много воды, но в ней высказана правильная мысль — у нервных клеток должны быть простые общие принципы обучения и взаимодействия. Никакой жестко заданной программой нельзя заставить электронную собаку научиться понимать новые команды на любом языке и гавкать на чужих. Или даже просто двигаться на четырех лапах и прыгать через препятствия. Когда будут разработаны такие принципы, можно будет говорить, что мы приблизились к пониманию того, как устроен интеллект.
Президент вызывает к себе в кабинет. Ставится задача: президент хочет взорвать пару городов в другой стране. Желательно, полностью.
Что нам нужно?
1. Бомбардировщик, работающий в скрытом режиме.
2. Грузовой отсек из расчета максимум 1 бомба на каждый город.
3. Пилот, не занятый в других полетах.
4. Полученный взрыв должен быть хорошо заметен и нанести много повреждений.
Таким образом, мы приходим к единственному варианту — атомная бомба.
…
Технические детали реализации.
…
Даем президенту код от красной кнопки, объясняем принцип работы, и пусть сидит играется.
Решение работает хорошо, города разрушены до основания, жители мира о человеке, отдавшем приказ, знать не знают (но догадываются). Президент доволен.
Если серьезно, я не знаю, стал ли бы я в какой-либо ситуации делать такую программу по требованию начальства. Но писать об этом я бы точно не стал.
Мне как-то пришла в голову похожая, но немного другая мысль. Написание кода автоматически с помощью перебора вариантов. Например, задаем для функции вход и выход, как в юнит-тестах. Объявленные классы, методы, переменные, и операторы языка — единицы перебора. После завершения перебора выбираем наиболее подходящий вариант. В принципе, это возможно, только наверно много времени будет занимать.
Есть проект CLDR и основанная на нем библиотека ICU. В ней есть средства для форматирования дат, чисел, форм множественного числа, и других вещей, которые зависят от локализации.
Насколько я понимаю, последовательные GUID-ы тоже не на единицу отличаются, если рассматривать его как 128-битное число? Как вы сказали, 32 бита брать необязательно, можно те же 128. Если даже раздавать всем клиентам по 1000 каждый раз, то получится примерно 2^118 вариантов. Если база большая, к примеру расположена на 4 машинах, то можно реализовать такую же схему, как с клиентами — генератор последовательности на каждой машине получает свой большой диапазон у мастер-генератора (назовем его так): [1 — 1000000], [1000001 — 2000000],… Как вы считаете, такая схема реальна, или не стоит заморачиваться? В общем-то, основная причина, по которой я спрашиваю — поиск по целочисленному ключу теоретически должен быть быстрее поиска по GUID (что имеет значение при отказе от join-ов).
Возможно, вопрос немного глупый, но что если бы можно было генерировать автоинкремент на клиенте? К примеру, при подключении к БД программа резервирует себе некоторый набор id-шников — [1001-1100] — и расходует при создании новых записей. По окончании запрашивает снова — [1601-1700]. Какие недостатки будут у такой системы?
Ну вообще-то говорится. Если первый(нулевой) элемент выхода сети больше, чем левый двигатель, то увеличить тягу левого двигателя. Это очень точно и очень конкретно. Это явно связывает первый элемент с левым двигателем. Вам так не кажется? Если нет, то почему?
Вы неоднократно говорите в комментах что-то в стиле «это еще не реализовано» и «это будет потом». Я же вам предлагал в прошлой статье сделать сначала законченный пример приложения типа игры в дурака и посмотреть на объем и наглядность получившегося кода. При реализации этой змейки на обычном языке программирования объем кода в 3 раза меньше (у меня получилось 60 строк с отступами и комментариями). Зачем показывать промежуточные примеры, да еще и требующие отдельного интерпретатора команд?
Кстати, а зачем вы сделали отдельный интерпретатор? Не потому ли, что с такой системой триггеров очистить участок экрана AxB это не самая простая задача?)
Никогда не понимал такую логику. Извините, мне какая разница, как владелец деньги зарабатывает? И почему я должен ему в этом помогать?
Сайт поддержать? Обычно есть альтернативы. Почему сразу на другой сайт не пошел? Да потому что этот сайт в поиске первым был, а тот десятым. На тех сайтах, у которых аналогов нет, и реклама особо не мешает.
На большинство сайтов я захожу через выдачу поисковика по вполне определенному запросу. Мне не нужна информация, не соответствующая этому запросу, и к тому же я не собираюсь в момент просмотра сайта что-то покупать или подписываться на какие-то услуги. Если вдруг понадобится, я поищу информацию об этом отдельно, сравню варианты и выберу то, что мне больше подойдет по цене/качеству.
Навязчивая реклама это хуже спама. Спам это реклама, предлагаемая без получения согласия, а тут реклама предлагается несмотря на явное запрещение. Я отключил рекламу, значит она в данный момент меня не интересует. Мне кажется, стоит бороться с такими сайтами аналогичными методами.
Отдельный вопрос это содержимое рекламы. Допустим, я зашел на некоторый сайт посмотреть новую серию сериала за чашечкой чая, а там надпись «ШОК! Грибок можно вылечить простым средством...». С фотографиями и анимацией. Пока что блокировщик помогает, но если не будет, я просто не буду посещать такой сайт.
Я разделяю общее мнение, что реклама не должна быть навязчивой. И это не отдельный вопрос, а прямая причина. Хорошие методы обхода блокировки будут применять не только «хорошие, нужные и контенто-богатые сайты, у которых реклама — единственный источник дохода», но и все остальные. Так что в целом ситуация не изменится, разве что технические решения будут сложнее.
Пусть реклама висит себе сбоку, пока не мешает. А еще было бы неплохо, если бы она показывалась, к примеру, 1 раз из 10. Чтобы не отвлекать от основного контента. Тогда можно было бы и глянуть иногда, что там интересного есть. Но это уже так, мелочи и хотелки…
Также хотел бы написать по технической части. Зачем писать статью с примером, который нельзя использовать? Раз уж подняли такую тему, то показали бы сразу рабочее решение с описанием всех нюансов, кому надо допилит сам. Тем более что есть другие проблемы — скрытие средствами CSS, блокировка баннеров определенного размера. Еще бывают рекламные скрипты, которые URL генерируют кодом.
Просто не было работы на C++ в моем городе. Совсем. И в соседних городах тоже редко появлялись. Да и опыт обычно требовался. Зато на PHP вакансий было гораздо больше. После универа я знал только C++, писал на нем все лабы и курсовые. Еще знал ассемблер, но его можно не считать. Помаявшись полгода по небольшим халтуркам, решил изучить веб-программирование. Поначалу было непривычно, потом оказалось, что это очень удобно, когда строки обрабатываются на уровне языка. Когда не надо преобразовывать числа в строки и обратно вручную. Или следить за границами массивов и правильным доступом в память. А через HTML и CSS закодировать интерфейс в большинстве случаев проще, чем на C++ — попробуйте через device context нарисовать на форме поле для тетриса. Но знание C++ дало мне понимание, как программа работает внутри — например, что сравнение строк это не то же самое, что сравнение целочисленных переменных, и оно требует дополнительных ресурсов, или как работает передача по ссылке и чем она отличается от передачи по значению.
Hello world на обоих этих языках написать несложно, а вот вывести табличку с разнородными данными из БД и внизу еще строчку «Итого» на PHP будет попроще.
Не знаю вашей специализации, возможно вы хороший специалист в этой области, но насколько мне известно, экспертные системы или распознающие нейросети не меняют своего исходного кода в процессе обучения. Меняется реакция программы на данные, но движок остается тот же.
И хорошо, что делает. Самомодифицирующаяся программа еще хуже, чем куча goto.
И хорошо, что нельзя. Где его потом искать в произвольном месте среди сотни тысяч строк кода.
Хороший аргумент, чтобы начать писать в другой парадигме. Кстати, некоторые стандарты кодирования обязывают заключать в фигурные скобки даже один оператор.
Перестановка инструкций в теле обработчика события тоже приведет к некорректному поведению программы.
Кстати, почему вы не попробовали реализовать свою идею на практике? Возьмите игру в дурака, или к примеру тетрис, и попробуйте реализовать на javascript, в нем есть средства для работы с событиями и их обработчиками. Результат опубликуете в статье. Предполагаю, что первая проблема, с которой вы столкнетесь — зацикливание событий change, когда в обработчике изменения одной переменной меняется вторая, а в обработчике второй первая.
На мой взгляд, в статье много воды, но в ней высказана правильная мысль — у нервных клеток должны быть простые общие принципы обучения и взаимодействия. Никакой жестко заданной программой нельзя заставить электронную собаку научиться понимать новые команды на любом языке и гавкать на чужих. Или даже просто двигаться на четырех лапах и прыгать через препятствия. Когда будут разработаны такие принципы, можно будет говорить, что мы приблизились к пониманию того, как устроен интеллект.
Если серьезно, я не знаю, стал ли бы я в какой-либо ситуации делать такую программу по требованию начальства. Но писать об этом я бы точно не стал.