(Раннее про 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. Всё это приучало думать больше чем суетиться.
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.