Еще про ChatGPT

(Раннее про ChatGPT.)

Говорят, он хорош в том, чтобы генерировать boilerplate-кода. На самом деле, это плохой симптом, что он вообще нужен вам. При желании можно обходиться без него.

Если вы думаете, что он вам нужен, на самом деле там просто нужна ф-ция вместо всего этого. И написать одной строчкой.

Вместо этого копипастят со stack overflow кода на одну страницу, который потом тяжело читать. Получается говнокод, извините. Я такое читать не могу. (И вам не советую.)

При желании даже на чистом Си можно писать без boilerplate-кода, я пробовал, и даже получалось.

Почему в ранних версиях Unix нету boilerplate-кода вообще? Ну, то есть, вообще нету? Может быть, они были умнее вас? Да, они были умнее вас.

И как тут не вспомнить:

И я скажу лишь одно: шли бы нах## все эти хейзы-шмейзы и амнезия заодно
Это не то говно, что щас гровят дети под искусственным светом
Этим занимались седые мужчины в чуйской долине знойным летом

( Кровосток )

Иные молодые люди хвастаются, как много тысяч строк кода у них в проектах. Это не совсем то, чем нужно хвастаться, на самом деле. Или вообще, говорить о таком в приличном обществе. Любой идиот накопипастит всякого говнища ХЗ откуда. Для этого много ума не надо. А интернет теперь дешевый очень.


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

Чем больше думаете, и чем меньше сидите за компом -- тем лучше.

Очень плохо, когда вы не думаете вовсе, а только сидите за компом и суетливо что-то откуда-то копипастите. Это уровень говнокода.

Известная байка про Резерфорда:

молодой физик : Я работаю с утра до вечера.
Резерфорд: А когда же вы думаете?

Если ваш начальник не понимает, что вам нужно время на "думать", значит он или не в теме или говнокодер.


Вы возразите, что в каких-то ЯП низкого уровня со статической типизацией, просто чтобы файл открыть и прочитать, надо как раз и навалять много boilerplate-кода.

И я тоже был таким, грешен.

Но вот что перевернуло моё сознание -- ЯП Wolfram Mathematica. Это практически тот же Лисп, только немного более человечный. Лично для меня в свое время Лисп был слишком тяжел, а вот Mathematica -- это было в тему. Сам Д.Кнут юзает Mathematica и хвалил мануалы от нее.

Автор, С.Вольфрам -- он как Стив Джобс в мире математического софта -- тут всё такое же тормозное и глючное как и у всех, но зато красивенький интерфейс и мануалы. Мануалы я долго читал вдоль и поперек и мне это дичайше помогло в жизни. (После Mathematica я уже познавал Лиспы -- Scheme и Racket.)

Очень хорошо, если многие ваши проги на Wolfram Mathematica занимают только один экран. Помните, как в Юниксах -- пусть каждая прога делает только одну задачу, но хорошо. К этому надо стремиться.

Это высокоуровневый ЯП в динамической типизацией, но дико практичный. Там тонны всего полезного и практичного. Он очень хорош для прототипирования и экспериментов. Конечно, потом, на совесть, для "продакшена", надо переписывать на что-то со статической типизацией.

Питон тоже на Лисп очень похож, но я думаю, он не годится для перестройки мозгов, т.е., на нем можно писать в алголовском стиле. А Mathematica приучает писать так, как в Лиспе.

Некоторые люди, например, Xah Lee (известный эксперт по Emacs-у), идут так далеко, что утверждают, что Mathematica даже лучше Лиспа, потому что в Лиспе остался ненужный рудимент -- cons-ячейки, car/cdr. А в Mathematica этого нет. (Кста, в Питоне тоже нет.)

Я бы сказал что это именно тот ЯП, который лучше всего для учебы. Как первый ЯП для юного подростка-школьника, он даже лучше того же Питона.

Также, там очень хорошо продуман и ЯП и все эти библиотеки, API. Крайне полезно изучать чужие (хорошие, удачные) API, чтобы вообще знать, как люди проектируют это. С.Вольфрам, при всех его странностях, и правда соображает что-то в проектировании ЯП.

Недостатков у Mathematica минимум два -- коммерческий/проприетарный продукт, а также С.Вольфрам последнее время немножко сходит с ума и скатывается в сайнс-фрикство (но картинки у него красивые). Ну и Mathematica врядли будет хороша для "продакшена".

Итог: Mathematica приучает писать коротко, ясно, по делу, и без boilerplate-кода. Потом, полученные навыки, вы сможете применять уже в любых ЯП и средах. И изучение Mathematica наверное легче и менее болезненно, чем изучение Лиспа. (Лисп потом понимать будет легче.)


Как побольше спокойно думать и поменьше суетливо стучать по клаве.

У меня такое бывало не от хорошей жизни. Вспомним поговорку: "не было бы счастья, да несчастье помогло."

Зимой 2022-2023 в Киеве отрубали напругу часто. Можно было бы работать дома на ноуте с аккумами, но мобловые базовые станции рядом тоже нередко падали из-за отключений, а иногда и работали на своих аккумах-генераторах, но моблоинет всё равно часто шкандыбал.

А работать в то время мне нужно было крайне сильно. Я брал лаптоп и шел в какой-нибудь ТЦ. Там собиралась местная хипстота с тонкими Макбуками, ну и я вместе с ними.

Хипстерам розеток не хватало, они приносили с собой длинные удлинители (хорошо сказал!), раскладывали на полу. Появлялась стойкая ассоциация с музыкантами, приехавшими со своим аппаратом.

Но там не всегда удавалось долго сидеть. Через пару часов или напруга там пропадала, или воздушная тревога (где-то Миг взлетел) и охрана всех выгоняла на улицу.

Я неспешно шел пешком в следующий ТЦ, где, в надежде, будет напруга и стабильный инет. (Трамваи и тралики кста в ту зиму не очень ходили, экономили напругу.) В следующем ТЦ сидел аки хипстер еще 1-2 часа, потом опять или напруга падала или взлет Мига где-то, или местный инет начинал сильно шкандыбать, и я опять шел в следующий ТЦ.

За день обходил в среднем 2-4 ТЦ.

Во время неспешных перебежек между ТЦ, успевал многое обмозговать. И начал вспоминать мучительно -- сколько длился урок в школе и перемена? И сколько были перемены в ВУЗе, где я как-то пытался учиться? Может не зря всё это было расчитано? Все эти периоды?

КПД работы у меня выросло немеряно, я прямо даже и не знал, что я так умею. И это притом что нервы из-за войны, из-за прилетов, из-за проблем с напругой, из-за неясности с будущим вообще. И притом что в этих ТЦ и кабаках перед глазами много шумного народу, кто-то даже может бесцеремонно заглянуть вам в дисплей.

Собственно, если что-то не получается, надо всё бросить и идти на улицу, отвлечься, походить там. "Утро вечера мудренее" -- как говорят.


Пляски с бубном называют еще shotgun debugging. 1, 2. Это очень плохо.

У Р.Фейнмана в известной книге было о том, как он "чинит радиоприемники думая". Я живьем видел электронщиков, которым удвалось ремонтировать девайсы не включая их. Конечно, это бывало в простых случаях, и не часто, но впечатляло очень сильно.

А я, когда "реверсил код", одно время юзал отладчики, потом бОльшей частью сидел в IDA. Отладчик мне нужен был только чтобы уточнить что-то, подсмотреть, что в каком регистре в определенное время. Для того я даже свою (консольную) утилиту сочинял, чтобы юзать вместо отладчика: А потом я делал что-то похожее на основе intel pin. Всё это приучало думать больше чем суетиться.

(the post first published at 20240720, updated at 20240725.)


List of my other blog posts.

Subscribe to my news feed,

Yes, I know about these lousy Disqus ads. Please use adblocker. I would consider to subscribe to 'pro' version of Disqus if the signal/noise ratio in comments would be good enough.