AI создаст миллионы новых рабочих мест, говорят они нам.
...и сам будет на них работать.
...и сам будет на них работать.
😁48👍8❤3❤🔥1
Роб Пайк и не скрывает, для чего Go: для корпоративных сверхприбылей и организации галер, где разработчиков сознательно превращают в тупенькие машинки, совсем скоро легко заменимые AI, и выжимают из них по максимуму.
Software engineering might be science; but that's not what I do. I'm a hacker, not an engineer...
Programmers are often fond of saying, "Nobody would ever do that!" in response to potential bugs identified in code. Yet, people invariably do things that "nobody would ever do," regularly...
The idea that a piece of code can be written once and then be somehow safe and usable forever is a dangerous fallacy...
Most programmers are terrible. Essentially, they write code that is expected to work, yet they ignore that software doesn't work 100% of the time...
"Считается, что если ты не в состоянии заработать себе на жилище и на одежду, значит, ты безнадежный дурак и тебе место как раз на острове Дураков. Первое время тебя там будут и кормить, и поить, и угощать чем захочешь, и ничего делать не надо будет. Знай себе ешь да пей, веселись да спи, да гуляй сколько влезет. От такого дурацкого времяпрепровождения коротышка на острове постепенно глупеет, дичает, потом начинает обрастать шерстью и в конце концов превращается в барана или в овцу."
"Незнайка на Луне"
Будете кодить на Go на корпоративных островах Дураков -- быстро превратитесь в барана.
Software engineering might be science; but that's not what I do. I'm a hacker, not an engineer...
Programmers are often fond of saying, "Nobody would ever do that!" in response to potential bugs identified in code. Yet, people invariably do things that "nobody would ever do," regularly...
The idea that a piece of code can be written once and then be somehow safe and usable forever is a dangerous fallacy...
Most programmers are terrible. Essentially, they write code that is expected to work, yet they ignore that software doesn't work 100% of the time...
"Считается, что если ты не в состоянии заработать себе на жилище и на одежду, значит, ты безнадежный дурак и тебе место как раз на острове Дураков. Первое время тебя там будут и кормить, и поить, и угощать чем захочешь, и ничего делать не надо будет. Знай себе ешь да пей, веселись да спи, да гуляй сколько влезет. От такого дурацкого времяпрепровождения коротышка на острове постепенно глупеет, дичает, потом начинает обрастать шерстью и в конце концов превращается в барана или в овцу."
"Незнайка на Луне"
Будете кодить на Go на корпоративных островах Дураков -- быстро превратитесь в барана.
👍52🤔25😁7❤5💯3
Как думаете, кто первым выпустит в РФ "свой IDE"?
Anonymous Poll
49%
ЯндексIDE
1%
МэйлIDE
1%
ОзонIDE
2%
АвитоIDE
35%
СберIDE
4%
ТинькоффIDE
4%
ГостехIDE
4%
РКНIDE
🏆25🤔18😁7⚡4🤓2
Сермяга в том, что темки моей Школы легко понимаются на уровне средних курсов хорошего университета, хотя их выпускники "без опыта" почему-то считаются джунами наравне с самоучками, хотя то, что они знают и умеют, обычно бывает мало понятно и многим миддлам (а то и сеньорам), вошедшим в ИТ без высшего образования, которые дальше своего веб-фреймворка ничего не видят и не хочут понимать :) Знание фреймворков и библиотек -- это дешёвка; покажите мне вашу реальную программистскую ценность, которая только приумножается с течением времени.
Например, функциональное программирование вообще не требует сложного обучения... если только вы не пришли к нему с тяжким наследием ООП и не ожидаете, что в ФП всё будет так же, как и то, что вы уже "знаете".
Печально, но Java/C#/Python... в мэйнстриме практически всегда используются как процедурные языки с анемичными моделями данных, оркестрируемыми "богоподобными" сервисами...
Например, функциональное программирование вообще не требует сложного обучения... если только вы не пришли к нему с тяжким наследием ООП и не ожидаете, что в ФП всё будет так же, как и то, что вы уже "знаете".
Печально, но Java/C#/Python... в мэйнстриме практически всегда используются как процедурные языки с анемичными моделями данных, оркестрируемыми "богоподобными" сервисами...
👍54🤔16❤6❤🔥5🫡2
Вот поэтому я всегда отговаривал, отговариваю и буду отговаривать от роста в тимлиды/ит-менеджеры/... Вы прокачали классное множество дорогостоящих технических скиллов под интраверта, и вдруг переходите в полностью экстравертированный "менеджерский" стек с нуля, где ничего не умеете, надо с этими капризными противными программистами возиться, текучка оперативка сжирает всё время, сотни писем в день... Зачем это вам?
Более того, на курсе карьеры выкладывал даже "Почему быть критически важным членом команды -- это плохо?".
Ну и, конечно, всегда лучше быть тем, кого стараются схантить, чем тем, кто за этим всем мучительно следит. Только имейте в виду, начальство всегда ищет, на кого бы им сгрузить эту муторную тимлидскую работу, и если вы сеньор, то 98% что уже кандидат. Красный звоночек, когда вас попросят "подменить тим/техлида пока он в отпуске". Это значит, вы не изучили материал по карьере "Как зарабатывать больше, не переходя в менеджеры/тимлиды/...", и дела ваши плохи :)
Вспомнилось в тему: когда гениального Андерса Хейлсберга (автор TurboPascal и Delphi) микрософт переманивала, обещая ему миллионные зарплаты, то демонстративно присылала Мерседес за ним прямо к офису Борланда :)
В целом, выиграл весь мир (получились не менее великолепные C# .NET и TypeScript), кроме конечно Borland.
Будь как Хейлсберг!
Более того, на курсе карьеры выкладывал даже "Почему быть критически важным членом команды -- это плохо?".
Ну и, конечно, всегда лучше быть тем, кого стараются схантить, чем тем, кто за этим всем мучительно следит. Только имейте в виду, начальство всегда ищет, на кого бы им сгрузить эту муторную тимлидскую работу, и если вы сеньор, то 98% что уже кандидат. Красный звоночек, когда вас попросят "подменить тим/техлида пока он в отпуске". Это значит, вы не изучили материал по карьере "Как зарабатывать больше, не переходя в менеджеры/тимлиды/...", и дела ваши плохи :)
Вспомнилось в тему: когда гениального Андерса Хейлсберга (автор TurboPascal и Delphi) микрософт переманивала, обещая ему миллионные зарплаты, то демонстративно присылала Мерседес за ним прямо к офису Борланда :)
В целом, выиграл весь мир (получились не менее великолепные C# .NET и TypeScript), кроме конечно Borland.
Будь как Хейлсберг!
👍63💯11❤5✍3🔥1
Хм: "Ranking Functional Programming Languages"
На самом деле это всё одно:
Elm -- это OCaml для детишек.
Haskell -- это ленивый OCaml.
Scala -- это мучительный OCaml :)
Gleam -- это отлакированный OCaml.
F# -- это корпоративный OCaml.
+
Swift -- это хипстерский OCaml.
Rust -- это системный OCaml.
TypeScript -- это веб-OCaml.
SML -- OCaml для бумеров.
Coq -- OCaml для нердов.
Просто выучите OCaml
На самом деле это всё одно:
Elm -- это OCaml для детишек.
Haskell -- это ленивый OCaml.
Scala -- это мучительный OCaml :)
Gleam -- это отлакированный OCaml.
F# -- это корпоративный OCaml.
+
Swift -- это хипстерский OCaml.
Rust -- это системный OCaml.
TypeScript -- это веб-OCaml.
SML -- OCaml для бумеров.
Coq -- OCaml для нердов.
Просто выучите OCaml
✍57😁17🫡9👍6❤3
Философский коан. Смартфон -- это ...
Anonymous Poll
14%
(is a) наследник от Компьютер (но что с Телефоном?)
58%
(has a) композиция Компьютер с Телефоном (или наоборот?)
28%
класс + два интерфейса (копипастить их реализации в разных классах?)
👍40🤔4❤3
Forwarded from воспоминания математиков
У Кузьмина была книжная полка и была лестница, по которой он лазил за книгами. На верхнем этаже среди этих книг стояла водка, он залезал наверх, добирался до водки, напивался, делал математические теоремы, а когда он уставал, он опять залезал по лестнице. И так весь день, до тех пор, пока у него хватало сил залезть доверху не упавши.
Таким методом Кузьмин доказал формулу Гаусса, которая с тех пор называется формула Гаусса-Кузьмина. Но потом он еще решил, что Гаусс все-таки давно жил, а вот есть проблемы Гильберта — и надо хоть одну решить. И он решил такую проблему Гильберта: будет ли число два в степени корня из двух алгебраическим или трансцендентным — то есть существует ли уравнение с целыми коэффициентами которому удовлетворяет это число.
Над этой задачей очень долго бился один генерал, из КГБ, который занимался криптографией в Москве. Это был главный начальник криптографической службы советского союза в военно-морском флоте — Александр Осипович Гельфонд. Он бился над ней несколько лет и смог доказать, что два в степени корень из минус двух — не алгебраическое число. Однако это не проблема Гильберта — это комплексное число, совсем другое. Он думал несколько лет над этой проблемой и у него ничего не получалось, он мне говорил, что совершенно отчаялся, думал, что это никогда не выйдет.
И тут появился Кузьмин, который, использовав свою лестницу, а также работу Гельфонда, понял, что к ней надо добавить, тем самым решив проблему Гильберта.
воспоминания В.И. Арнольда (из лекции «Об истории обобщенных функций»)
Таким методом Кузьмин доказал формулу Гаусса, которая с тех пор называется формула Гаусса-Кузьмина. Но потом он еще решил, что Гаусс все-таки давно жил, а вот есть проблемы Гильберта — и надо хоть одну решить. И он решил такую проблему Гильберта: будет ли число два в степени корня из двух алгебраическим или трансцендентным — то есть существует ли уравнение с целыми коэффициентами которому удовлетворяет это число.
Над этой задачей очень долго бился один генерал, из КГБ, который занимался криптографией в Москве. Это был главный начальник криптографической службы советского союза в военно-морском флоте — Александр Осипович Гельфонд. Он бился над ней несколько лет и смог доказать, что два в степени корень из минус двух — не алгебраическое число. Однако это не проблема Гильберта — это комплексное число, совсем другое. Он думал несколько лет над этой проблемой и у него ничего не получалось, он мне говорил, что совершенно отчаялся, думал, что это никогда не выйдет.
И тут появился Кузьмин, который, использовав свою лестницу, а также работу Гельфонда, понял, что к ней надо добавить, тем самым решив проблему Гильберта.
воспоминания В.И. Арнольда (из лекции «Об истории обобщенных функций»)
😁53🤔16❤9✍4👍4
Прекрасное, про рынок труда в Узбекистане:
- все банки и ритейл говорят, что нехватка КАЧЕСТВЕННОГО персонала более 60 процентов и это очень замедляет развитие
- при этом на каждую позицию тысячи откликов, но люди не проходят собеседование: крайне низкая квалификация и неумение быстро учиться
- очень низкая лояльность к любой компании: люди уходят в один день, если где-то аооьещаои зарплату на 100 долларов больше. Вопросы интересности проектов и своей репутации не останавливают от перехода
- экспатов все меньше и они все дороже.
Очень надеюсь, что и в русской айтишке скоро будет так же.
Хочите лояльности? Платите в джва раза больше. За деньги -- да.
Будь как узбеки!
- все банки и ритейл говорят, что нехватка КАЧЕСТВЕННОГО персонала более 60 процентов и это очень замедляет развитие
- при этом на каждую позицию тысячи откликов, но люди не проходят собеседование: крайне низкая квалификация и неумение быстро учиться
- очень низкая лояльность к любой компании: люди уходят в один день, если где-то аооьещаои зарплату на 100 долларов больше. Вопросы интересности проектов и своей репутации не останавливают от перехода
- экспатов все меньше и они все дороже.
Очень надеюсь, что и в русской айтишке скоро будет так же.
Хочите лояльности? Платите в джва раза больше. За деньги -- да.
Будь как узбеки!
🤝60😁22❤10👍6🤔4
Из очередных отчётов курсантов:
"Даже на фулл-тайме умудрился себе устроить полное погружение в курс
Сегодня ночью приснилось, что Сергей Игоревич называет мой код попыткой его троллить. а так же просит переделать код с использованием технологий, названных неизвестными аббревиатурами
Во сне прямо панику почувствовал"
(после занятия по vim :)
не-не, ну я с большим пониманием и доброжелательностью отношусь к начинающим :)
Кстати, если снятся неизвестные аббревиатуры, постарайтесь их запомнить, а потом погуглите: вас могут ждать интересные открытия :)
- Я осознанно вывела цифры с 0. Вывод проверила. Как я увидела, что нужно выводить с 0 до 10 объяснить не могу.
-- Самое тяжёлое задание за всё время обучения в школе. Я всё ещё не доволен тем, что получилось и при этом не понимаю, как я мог бы сделать его лучше.
-- Первый случай, который я вспомнил не просто краевой, а откровенно идиотский. Не так давно мне подчиненный программист приносит код и бэкенда портала, где по таблице пользователей в цикле проходят и что-то с чем то сверяют. Я сначала глазам не поверил, ну неужели мы вытаскиваем всех пользователей и что то проверяем в цикле?
да, черт возьми; программист тоже принес мне это посмотреть, потому что засомневался в своем здравомыслии и зрении.
Короче говоря, оказалось что это было "by design", ибо, почти цитирую - "мы так когда то сделали, потому что у нас портал один, а на одну и ту же почту должно быть возможно иметь аккаунты принадлежащие к разным организациям".Как решили? Ну, отлепили руки от лица через пару часов удивления, выполнили небольшую денормализацию в базе, и все таки сделали уникальный индекс по почте, так как это и должно было быть изначально.
-- Example 4 - документ может быть загружен с 3-мя разными состояниями, Pending, Error, Success.
Здесь нарушаем принцип LSP, поскольку приводим конкретную реализацию к заранее известному типу.
Верное решение - сделать метод обработки конкретного запроса на документ, в конкретном типе И использовать реализацию интерфейса, а не наследование.
Итого
1) Пойду перечитывать типы наследования из курсов по ООАП :)
-- Теперь понимаю,почему вы так за паттерн ... - когда даже на микроуровне убираются так элегантно ифы за счет ad hoc полиморфизма,хочется плакать от счастья… Очень классный материал!!
-- Третья неделя идёт, коллеги отмечают мой затравленный и озлобленный взгляд, а мне просто не нравится, что поток задач ворует у меня темпы развития в выбранном направлении.
"Даже на фулл-тайме умудрился себе устроить полное погружение в курс
Сегодня ночью приснилось, что Сергей Игоревич называет мой код попыткой его троллить. а так же просит переделать код с использованием технологий, названных неизвестными аббревиатурами
Во сне прямо панику почувствовал"
(после занятия по vim :)
не-не, ну я с большим пониманием и доброжелательностью отношусь к начинающим :)
Кстати, если снятся неизвестные аббревиатуры, постарайтесь их запомнить, а потом погуглите: вас могут ждать интересные открытия :)
- Я осознанно вывела цифры с 0. Вывод проверила. Как я увидела, что нужно выводить с 0 до 10 объяснить не могу.
-- Самое тяжёлое задание за всё время обучения в школе. Я всё ещё не доволен тем, что получилось и при этом не понимаю, как я мог бы сделать его лучше.
-- Первый случай, который я вспомнил не просто краевой, а откровенно идиотский. Не так давно мне подчиненный программист приносит код и бэкенда портала, где по таблице пользователей в цикле проходят и что-то с чем то сверяют. Я сначала глазам не поверил, ну неужели мы вытаскиваем всех пользователей и что то проверяем в цикле?
да, черт возьми; программист тоже принес мне это посмотреть, потому что засомневался в своем здравомыслии и зрении.
Короче говоря, оказалось что это было "by design", ибо, почти цитирую - "мы так когда то сделали, потому что у нас портал один, а на одну и ту же почту должно быть возможно иметь аккаунты принадлежащие к разным организациям".Как решили? Ну, отлепили руки от лица через пару часов удивления, выполнили небольшую денормализацию в базе, и все таки сделали уникальный индекс по почте, так как это и должно было быть изначально.
-- Example 4 - документ может быть загружен с 3-мя разными состояниями, Pending, Error, Success.
Здесь нарушаем принцип LSP, поскольку приводим конкретную реализацию к заранее известному типу.
Верное решение - сделать метод обработки конкретного запроса на документ, в конкретном типе И использовать реализацию интерфейса, а не наследование.
Итого
1) Пойду перечитывать типы наследования из курсов по ООАП :)
-- Теперь понимаю,почему вы так за паттерн ... - когда даже на микроуровне убираются так элегантно ифы за счет ad hoc полиморфизма,хочется плакать от счастья… Очень классный материал!!
-- Третья неделя идёт, коллеги отмечают мой затравленный и озлобленный взгляд, а мне просто не нравится, что поток задач ворует у меня темпы развития в выбранном направлении.
❤41👍16😁9🔥4🤔2
Не волнуйтесь, вы не одиноки :) Также в своё время лоханулись и GitLab, и Zinga, и Adobe, и Snap, и Pinterest, и многие многие другие.
К счастью, теперь доступны только российские облака, с ними в случае такого разбираться куда легче. Хоть бы вообще весь западный софт поскорее ушёл, и технически ничего особого в нём нету более чем полностью, а про ноухау вообще говорить смешно. Вопрос исключительно в грамотной организации процесса разработки(+ побольше денежек :) .
Вдобавок, сегодня много классных продуктов доступны как опенсорс, просто форкайте и плюйте на лицензии. copyleft 🦾
Рассказывал например, на каких прекрасных общедоступных решениях сегодня можно строить тяжёлые и стратегически верные облачные инфраструктурные сервисы в России.
К счастью, теперь доступны только российские облака, с ними в случае такого разбираться куда легче. Хоть бы вообще весь западный софт поскорее ушёл, и технически ничего особого в нём нету более чем полностью, а про ноухау вообще говорить смешно. Вопрос исключительно в грамотной организации процесса разработки
Вдобавок, сегодня много классных продуктов доступны как опенсорс, просто форкайте и плюйте на лицензии. copyleft 🦾
Рассказывал например, на каких прекрасных общедоступных решениях сегодня можно строить тяжёлые и стратегически верные облачные инфраструктурные сервисы в России.
✍44👍26😎3❤1🤔1
Документация по коду никому не нужна. Они хотят знать достаточно, чтобы быстро и безопасно изменять код, чтобы получить новые результаты, которые им нужны, и при этом ничего случайно не сломать. Документация -- особенно хрупкий и дорогой путь к этой цели.
-- Кент Бек* июнь 24
* мнение автора может не совпадать с мнением редакции
-- Кент Бек* июнь 24
* мнение автора может не совпадать с мнением редакции
✍49🤔15❤2💯2🤓2
Пацан испугался и потёр пост; пока он на веб-архиве ещё хранится, но 💯 рептилоиды со временем и архив целиком прикроют.
"How a single ChatGPT mistake cost us $10,000+"
We copy pasted the code it generated, saw everything worked fine, tried it in production, saw it also worked, and went on our merry way...
This problem became really well hidden because of our backend setup. We had eight ECS tasks on AWS, all running five instances of our backend (overkill, yes we know, but to be fair we had AWS credits). This meant any single user had a pool of potentially 40 unique IDs they could land upon...
Ознакомьтесь пока доступно, очень поучительно.
Но на самом деле это происходит из-за использования моделей программирования без их понимания. Разве сделали бы такое мои курсанты, занимающиеся на hard work например?
В этом десятилетии обучение software design пока ещё остаётся ключевым фактором...
"How a single ChatGPT mistake cost us $10,000+"
We copy pasted the code it generated, saw everything worked fine, tried it in production, saw it also worked, and went on our merry way...
This problem became really well hidden because of our backend setup. We had eight ECS tasks on AWS, all running five instances of our backend (overkill, yes we know, but to be fair we had AWS credits). This meant any single user had a pool of potentially 40 unique IDs they could land upon...
Ознакомьтесь пока доступно, очень поучительно.
Но на самом деле это происходит из-за использования моделей программирования без их понимания. Разве сделали бы такое мои курсанты, занимающиеся на hard work например?
В этом десятилетии обучение software design пока ещё остаётся ключевым фактором...
👍39⚡13❤8🤔6😁5
Динамическая типизация, кстати, здесь не при чём.
Скажете, в Java сделано "по-взрослому", значение захватывается как и положено в момент определения лямбда-выражения? Более того, компилятор сам напомнит:
"local variables referenced from a lambda expression must be final or effectively final".
Ну вот например пример на Java с final. Что выведет? :)
(пауза)
что-то такое: 1 9 8 7 3 0 4 6 5 2
Только теперь для понимания этого требуется пройти трек уже по параллельным вычислительным моделям :)
Спрашивали "а как этому всему правильно следовать на практике, чтобы таких косяков не допускать?"
Готовлю несколько новых курсов по software design, в течение лета.
Скажете, в Java сделано "по-взрослому", значение захватывается как и положено в момент определения лямбда-выражения? Более того, компилятор сам напомнит:
"local variables referenced from a lambda expression must be final or effectively final".
Ну вот например пример на Java с final. Что выведет? :)
(пауза)
Только теперь для понимания этого требуется пройти трек уже по параллельным вычислительным моделям :)
Спрашивали "а как этому всему правильно следовать на практике, чтобы таких косяков не допускать?"
Готовлю несколько новых курсов по software design, в течение лета.
🔥51🤔9👍6❤3🐳3
Товарищи фронтендеры, как вы обычно проверяете на неопределённость?
Anonymous Poll
63%
if (foe === undefined) { ...
8%
if (foe === void 0) { ...
29%
if (typeof foe === "undefined") { ...
🤔47🫡10🤯5❤1