Как стать автором
Обновить
-2
0
Андрей Ежгуров @eandr_67

Пользователь

Отправить сообщение
А может быть, всё было бы наоборот? Именно нефтедоллары позволил противникам либерализации экономики свернуть проводимые реформы. И, как результат, 15 лет застоя послужили причиной развала сначала экономики, а через несколько лет и страны.
Зачем переводить очередной опус, содержащий в точности тоже самое, что и множество уже опубликованных на Хабре статей и напечатанных учебников JavaScript? Да ещё и пытающийся убедить читателя, что говнокод — это хорошо.

Всё, что снижает читабельность и/или надёжность промышленного кода — говнокод (полагаться на автоматическое приведение типов — безусловное снижение надёжности кода). Это в пет-проектах можно предлагаемым автором трюкачеством заниматься, а в качественном хорошо читаемом коде для получения логических значений будут использоваться не ‼ и Boolean(), а === и !== — о которых в статье вообще не упоминается.
Для первичного ознакомления с алгоритмами лучше взять учебник Вирта — в котором «на пальцах» объясняется концепция вычислительной сложности и сравниваются разные алгоритмы решения одной задачи. А ГА — согласен с автором статьи — типичный научпоп для тех, кто ни в каком виде не собирается заниматься программированием, но хочет иметь хоть какое-то представление о нём.
И у Брэдберри, и у Шекли, и у Лема, и у многих других фантастов тоже есть произведения на эту тему — как минимум не хуже, чем у Дика. Но другие писатели не зацикливаются на единственной идее — чем и интересны.

P.S. Разумеется, мир вокруг реален. Но вот восприятие окружающего нас мира — всего лишь игра воображения, стимулируемая электрическими импульсами, передаваемыми мозгу органами чувств.
На мой взгляд, книги Дика нелогичны. Например, автор регулярно вводит новые элементы, никак не вытекающие из предыдущего повествования. Как автор психологической прозы он может быть и хорош, но фантастическая часть многих его произведений достаточно странная. Да, с фантазией у Дика хорошо, но его фантазии не выстраиваются в единую схему — вместо логично выстроенной картины получаем лоскутное одеяло плохо стыкующихся между собой обрывков мира.

Тот же «Убик» — о чём он? О том, как группа людей не заметила, как умерла и оказалась в «загробном мире» (точнее, в ограниченном по запасу ресурсов промежуточном состоянии между жизнью и окончательной смертью), практически неотличимом от реальной жизни. И первую часть книги они постепенно осознают, что умерли, а вторую часть пытаются как-то противостоять «вампиру», ворующему эти самые ресурсы. С точки зрения психологии персонажей — всё прекрасно, но фантастическая составляющая — зачем она? Какой во всём этом смысл?

Что хотят сказать в своих произведения Брэдбери или Шекли — понимаю. Но Дик для меня — это, скорее, поток сознания: генерирующий эмоции, но не генерирующий идеи, над которыми стоит задуматься.

P.S. «Убик» и «электоровцы» — да, читал (как и несколько других повестей). Но «Человека в высоком замке» не читал и не смотрел.
Списки в PHP есть: www.php.net/manual/ru/class.spldoublylinkedlist.php, а множества элементарно реализуются через массивы.

Но речь выше была о том, что массив в PHP — достаточно необычный тип данных, одновременно совмещающий в себе и линейный, и ассоциативный массивы.
«Компьютер» и «современный компьютер» — разные понятия. Если механическое устройство является Тьюринг-полным, оно безусловно называется «компьютером», хотя и не «современным».
Вы действительно считаете книгу Цукалоса полезной? Моё личное впечатление, оставшееся от попытки прочитать этот «шедевр»:

  • Бессистемный поток сознания — постоянные перескакивания с темы на тему.
  • Куча обрывков тривиальной информации, которым не место в «для профи». Именно обрывков, а не системных знаний: новичку по ним научиться чему-то невозможно.
  • Когда же автор накнец-то добирается до более серьёзных тем, он тут же прекращает объяснения и предлагает прочитать документацию по Go.
  • И, как вишенка на торте, совершенно шедевральное объяснение указателей, сводящееся к предложению самостоятельно узнать о том, что такое указатели, у любого разработчика на языке C.
  • Сознательное демонстративное игнорирование Code Style — с мотивировкой «мне так больше нравится».
  • Крайне низкое качество кода в примерах.
  • Множественные фактические ошибки в тексте, демонстрирующие не слишком хорошее знание автором языка Go.

И полностью согласен с высказанным выше мнением, что на первом месте должна быть книга Кернигана & Донована.
Как мне кажется к FuelPHP стоит присмотреться.
К сожалению, мне по работе приходится использовать этот клон Kohana, устаревший уже на момент своего появления. Даже по сравнению с более старыми фреймворками (например, Yii 1.1) FuelPHP выглядит доисторическим ископаемым.

Например, в нём отсутствует DI — от слова «совсем». Никакой автоконфигурации своего компонента нет и быть не может: все значения из файла конфигурации надо вытаскивать вызовами статических методов класса Config.

И, кстати, статические методы классов ядра фреймворка придётся использовать на каждом шагу: это самое ядро как минимум на половину состоит из классов, имеющих только статические методы. Если же такой класс может иметь несколько конфигураций (как, например, несколько подключений к базам данных), то имя отличной от дефолтной конфигурации придётся задавать в виде текстовой строки в вызове метода.
Обратите внимание: в описании курса пишут про разбор алгоритмов, которые могут встретиться на собеседовании, но ни слова не пишут про изучение базовых свойств алгоритмов. Натаскивание на конкретные задачи при отсутствии изучения теоретической базы.

Но если человека — не дав ему даже основ теории — натаскали решать определённые типы задач, то он и будет уметь решать только эти задачи — при этом нередко даже не понимая смысла вызубренного способа решения.
Дрессировка на прохождение собеседования — та же самая SEO-оптимизация: попытка занять место, не соответствующее реальным достоинствам. А то, что после окончания тестового периода от его услуг откажутся — это уже совсем другая история.
Кол-во градаций в шкале должно быть нечётным — чтобы был вариант «точно посредине».

И если моё любимое занятие — чтение, то, разумеется, я всегда себе найду занятие на вечер и это занятие всегда будет приносить удовольствие. Слишком уж неконкретно сформулировано.
Ничто не ново под Луной… В PDP-11 позиционирование головок «блинов» (накопители емкостью 2.5 Mb на диск) осуществлялось системой, очень похожей на цилиндрический линейный двигатель. Но без постоянных магнитов — оба цилиндра были электромагнитами. И это 1970-е годы.
Но это не значит, что не существует алгоритма, дающего либо всегда правильный ответ, либо «хз».
Да, такой алгоритм существует — тот самый, который ищет конструкции ++x; (и аналогичные тривиальные) и пишет к ним комментарии вида «значение x увеличивается на 1», а для всех прочих строк пишет «хз». Т.е. вообще не содержит семантического анализатора.

Но я выше прямым русским языком писал, что не рассматриваю подобные примитивные имитации, а говорю только об алгоритмах, способных анализировать семантику кода. Добавлю: на уровне, позволяющем писать реально полезные комментарии. Программа, пишущая «хз» даже в тривиальных случаях, никому не нужна, а эвристики, позволяющие генерировать нетривиальные комментарии, не могут не ошибаться.

N.B. Достаточно посмотреть на статические анализаторы кода (решающие в чём-то схожую, но на порядки более простую задачу), регулярно выдающие ложные сообщения об ошибках и столь же регулярно не замечающие реальные ошибки. А в многократно более сложной системе комментирования кода возможностей для появления ошибочных комментариев будет куда больше.
И вы вместе с Расселом к этому пришли формальной логикой, верно?
Смысл парадокса в том, что формально-логический ответ лежит вне рамок формально-логической системы вопроса. На вопрос «кто бреет брадобрея?» человек может ответить: «брадобрея не существует» (осознанно выйдя за границы вопроса), а компьютер такой ответ дать не может.
Теория алгоритмов утверждает, что не существует алгоритма, способного дать правильный ответ для любого алгоритма. Следовательно, для любой — даже самой изощрённой — программы найдётся алгоритм, для которого она даст ошибочный ответ. И совсем необязательно, что это будет какая-то экзотика.

Автор программы может предусмотреть множество типичных случаев, но не может предусмотреть всё. Более того, по мере усложнения эвристик наступит момент, когда разные эвристики начнут противоречить друг другу: найдутся участки кода, на которых разные части анализатора дадут разные ответы.

Брадобрея не существует (на что указал сам Рассел, сформулировавший парадокс брадобрея).
Ошибочные комментарии будут — обязательно. Т.к. алгоритм семантического анализа произвольного кода построить невозможно, значит будут использованы эвристики, пытающиеся выделить в коде заданный набор паттернов. Но никакие эвристики не в состоянии дать правильный ответ («хз» — тоже вариант правильного ответа) в 100% случаев — иначе это была бы не эвристика, а полноценный алгоритм, который — по определению — построить невозможно.

N.B. Разумеется, я говорю про системы, предназначенные для анализа семантики кода, а не перечисления выполняемых кодом арифметических действий. Бессмысленные комментарии вида «увеличить x на 1» анализа семантики не требуют.

Любая программа, построенная на достаточно сложных эвристиках, периодически ошибается — будь то шахматная программа, основанная на анализе возможных ходов или нейросеть, анализирующая лица на видео.

N.B. Да, все современные нейросети — это тоже вид эвристики. Отличающийся только тем, что настройка параметров производится автоматически — в процессе «обучения» на специально подобранной выборке.

Компьютер ограничен теорией алгоритмов, в свою очередь ограниченной формальной логикой. Именно потому существует множество задач, которые компьютер не может решить. Но мышление человека формальной логикой никак не ограничено. И это позволяет человеку решать задачи, недоступные для компьютера.

Любой логический парадокс (кто бреет брадобрея?) и компьютер либо завис, либо выдал заведомо ошибочный ответ. Но человек такие задачи решает — и на бытовом уровне, и в рамках матлогики. Более того, логические парадоксы — неотъемлемая часть человеческого интеллекта.
В том-то и проблема, что в оставшемся 1% случаев где-то будет «хз», а где-то — заведомо ошибочные комментарии: если бы «хз» всегда ставилось в нужных местах, это не была бы алгоритмически неразрешимая задача. И чтобы отличить правильные комментарии от ошибочных, понадобится человек — который будет вручную анализировать и код, и проставленные ИИ комментарии.
С невозможностью ИИ осмысленно комментировать я не спорю. Чтобы ИИ смог написать осмысленный комментарий, он должен понимать, что именно код делает. Но современный ИИ — это алгоритм (современные нейросети, построенные на базе цифровых вычислительных систем — это детерминированные алгоритмы), а теория алгоритмов много десятилетий назад доказала, что алгоритм, способный анализировать произвольные алгоритмы, не существует — это алгоритмически неразрешимая задача.
К тому, что автор подобных комментариев не понимает, что такое «самодокументированный код» и вместо того, чтобы дать переменным названия, отражающие их семантику, пытается комментариями объяснить смысл переменных. Для него краткость имени переменной важнее читабельности кода. А то, что читающим этот код, придётся тратить время и силы на разбор того, насколько эти комментарии соответствуют реальности, автора кода не колышет.
Много вы видели функций, которые возвращают 42 и ничего другого? Очевидно, что нет. А функции, возвращающие false (наряду со значениями других типов) и никогда не возвращающие true, в PHP на каждом углу. И выделение подмножества типа bool, содержащего единственную константу false, является отражением типичных практик написания PHP-кода.

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность