Комментарии 117
P.S. Еще бы epub/fb2 — не всегда полезно иметь отформатированный вариант книги, порой нужен и под читалку файл.
Pascal, Lisp и Scheme — всё то, что поможет найти работу.
Ну, лисп, может быть, чуть-чуть, но искать работу программиста "со знанием паскаля" я прям даже и не знаю.
Обычно, если я смотрю на навыки программирования у человека и там упоминается pascal, то это признак, что ничего другого в резюме не написать. (Может быть есть исключения, на дельфи без гуёв крутейшие штуки в своё время писали, но в целом — pascal в резюме, это как "опытный пользователь Office 2000").
Наверное, да, но у вас бы возник вопрос "что они ещё делали?". Если выяснится, что "ничего", то будет проблема. Потому что git что? Какой такой http?
В особенности ценно, если этот человек сделал это не потому что получил такую задачу, а из любопытства. Это показывает энтузиазм и умение достигать цели.
Совсем идеально, если при этом он достиг этой цели в области, где нельзя взять руководство и сделать все по нему. Есть еще места, куда мануалов не завезли.
Ну а если он по результатам написал этот мануал сам, и из него не только понятно как делать, но и почему именно так и с какими граблями можно столкнуться — я бы нанял такого просто чтобы он не усилил конкурентов. Не говоря уже о пользе дела.
-----.
Нанимать за знания бессмысленно, это требует точного попадания в предметку. Нанимать за способности извлекать, осваивать и применять знание — гораздо разумнее
океей. Но я хочу сказать, что вы сильно переоцениваете "способности" человека, который прослушал курс про компиляторы в институте и налабал свой парсер-лексер с каким-то кодогенератором.
Он может спокойно называть все перменные по буквам алфавита (с индексами, если надо), и из "освоенного за пару часов" гита вы потом долго будете вычищать строчки вида
x = b(y * aa2).i(j)
(в лучшем случае).
Повторю, вы себе представили Вирта 2.0, а я описываю человека (условные 30+), который семь лет сидит на кафедре информатики педагогического университета посёлка городского типа Верхние Грязи, и который написал компилятор паскаля (на паскале), и сейчас ищет новую работу, потому что кафедру расформировали.
И при прочих равных я бы предпочел 30+ чем 23-летнего сеньора )
А чтобы понять насколько такой человек хорош я бы предложил ему прямо на собесе реализовать в своем компиляторе оператор, который был бы обратным к GOTO — человек без фантазии даже не сможет вообразить подобное. И если он справится — можно брать не раздумывая: его существование — это просто редкая флуктуация, такой человек в принципе может достичь практически любых целей
Обратный goto это переход с лейбла на goto?
Да обычный ret, как по мне...
10: input X
20: noop
30: print "X is ", X
40: ret
50: COMEFROM 20
60: print "X^2 = ", X * X
70: ret
80: COMEFROM 20
90: print "X^3 = ", X * X * X
100 ret
В каком порядке будут выведены строки?
На COMEFROM можно сделать многопоток, и каждый COMEFROM будет запускать новый тред; а можно сделать event-loop, и тогда, это будет однопоток с событиями.
Ну, в Вашем варианте это больше похоже на hook (обработчик прерывания). Если вспомнить, как традиционно писались обработчики прерывания (таймера, например), то по моему видению, отработает сперва хук строки 50, затем он передаст по цепочке обработку хуку строки 80, а затем исполнение вернётся на строку 30. Но всё зависит от реализации хуков в данном псевдо-бэйсике ;-)
Отдельная история с хуками, конечно. Сейчас системы с хуками можно расширять только там, где есть вызов этих хуков. Умелое сочетание COMEFROM с GOTO и глобальными переменными позволит расширять системы в любой точке. Счастливой отладки, как говорится!
Блин, аж захотелось такое написать… Кажется я знаю, чем займусь на выходных.
Полгода не так много… Да и зависит от того, что за человек. Если это годный синьор, который пилит по общепризнанным бестпрактисам, то проект проще для понимания, чем если бы был сработан пачкой джунов.
Пункты 1 и 3 от количества программистов не зависят, знаю о чем говорю)
А ревью частенько бывает довольно поверхностным, на скорую руку, просто глянуть, что нет откровенной дичи.
И на мою имху, отсутствие 1 и 3 в относительно новом проекте — не такая большая боль, как например плохое проектирование с хрупкостью, сильной зацепленностью и прочим дублированием кода. Тесты и CI можно просто взять и сделать, а вот перелопачивать лапшу (не решаясь на переписывание с нуля) — удовольствие не для слабонервных.
А ещё забавнее будут попытки внедрить бест практицес при взаимодействии с сервисом, у которого некая сущность, назовём её Lead, может иметь разные допустимые наборы значений для полей, то есть в поле AccountType в сущности HHF000950 может лежать XXXX, YYY, и ZZZ, а в HHF000850 лежало ещё и AAA и BBB. И способа получить все возможные наборы значений для AccountType для всех Lead'ов просто нет. А ещё есть разные окружения и разные тенанты.
И между прочим, эти люди выдают вам ипотеку. То есть, вы, с вашими юнит-тестами, ходите к ним на поклон, чтобы вам дали денег на жильё.
У меня то ли на 3, то ли на 4 курсе провинциального технического вуза был предмет "Основы трансляции", где все это преподавалось. И, в качестве курсача как раз требовалось написать компилятор си/паскаля. Конечно, не всей грамматики языка, а какого-то ее подмножества. Не помню, чтобы с этим были какие-то проблемы. Конечно, никто не требовал оптимизации и промышленного качества кода, как и во всех остальных студенческих курсачах.
— Пожилой родственник может быть уже доктор наук в этой теме, для него все — просто, с таким-то опытом. Он на этом, быть может, собаку сьел и все статьи прочитал.
— Уровень студенческого курсовика вполне позволяет делать экспоненциальную сложность, или выкинуть все сложно обрабатываемые конструкции языка, забыть об оптимизациях, да мало ли где можно упростить…
Написание компилятора — как правило весьма нетривиально, там нет шаблонных решений, приходится творчески подходить к задаче. Поэтому можно считать такой проект лакмусовой бумажкой для квалифицированного программиста
Пажалста — https://hh.ru/vacancy/39588030
В ключевых навыках пкскаль и мс дос
Бегло проглядел первые несколько страниц, автор топит за pascal как язык удовлетворяющий двум условиям
1) минимум магических строк в helloworld которые выглядят «тут так принято» для начинающих. Типа сигнатуры main и инклюдов.
2) Указатели и адресная арифметика. Тут отваливаются Python и прочие managed memory языки.
и похоже что он заточил эту книжку под студентов младших курсов у которых вопрос трудоустройства стоит не так остро. Как по мне вполне разумный подход.
Ну, я книгу не видел, реагирую на пост.
Алсо, это вопрос интересный, что лучше — паскаль или Rust. Лично мне rust выглядит более гармоничным, во-первых никто ни где не мухлюет (магические операторы, волшебные int'ы), во-вторых, до обнаружения borrowck и lifetimes можно писать не думая про них (вот пример простой демки с условно-красивым шумом на экране — https://github.com/amarao/sdl_random/blob/main/src/main.rs, и мне кажется, что на pascal получилось бы более запутанно).
Стоит пролистать первый том, где все прекрасно объяснено, почему, что и как. И вы вряд ли сможете с этим поспорить. Просто потому, что автор профи и обучил тысячи студентов и имеет статистику.
И я, при прочих равных, обращу внимание на специалиста, который знает Lisp и Scheme — это говорит о многом понимающим людям.
Я так думаю, что книга "Введение в профессию" рассчитана на тех, у кого профильное резюме девственно чистое. И конкурировать они будут с типовыми студентами. А помогая сегодняшним МГУшникам, которые пишут на C89 страшное спагетти, используя wgcc и FAR в качестве IDE, я бы однозначно выбрал тех, кто прочитал эту книгу. Хотя бы за то, что там в первом же томе идёт система типов, которая в Паскале одна из наиболее красивых. Такого человека гораздо проще внедрять в type-oriented разработку, пересаживать на диалекты ADT в современных Rust/TypeScript/Haskel|ML-семействах и т.п., да и просто, как правило, приятно работать с его кодом в большой команде. Даже если этот код потом будет на Си. А если есть хотя бы базовое понимание LISP/Scheme, то считай большая удача.
Добавил бы и про опытных подателей резюме. На дельфи огромное количество энтерпрайз-софта было написано. Когда веб-фреймворки только поднимались с колен, помимо него и, прости меня господи, 1С ничего более эффективного не было. И скрывать этот факт человеку, который годами автоматизировал круное производство, банки и т.п. только потому, что там фигурировал Pascal...
Del
Вы бы лучше оглавление опубликовали. Я почитал наискосок — книга хорошая, а описание в вашей статье получилось скудное и унылое.
Если в обучение поставить телегу впереди лошади
А зачем ставить телегу впереди лошади, в чем смысл Вашей тирады? Речь о том, что чистые программисты на рынке почти не востребованы, а изучение стэка порой занимает намного больше времени, чем изучение алгоритмов и конструкций языка.
А зачем ставить телегу впереди лошади, в чем смысл Вашей тирады?
Вместо планомерного изучения программирования и общих принципов, заняться изучением доки по кубернетесу и ангуляру. Одно другому не мешает но лучше сначала научится программировать.
чем изучение алгоритмов
А вот это уже очень спорно.
Умение программировать подразумевается по умолчанию.
Тогда о чем вообще верхний комментарий? О том что книга с названием «Программирование» учит программированию а должна учить разработке ПО?
Тогда о чем вообще верхний комментарий?
Может стоит внимательно его прочитать? Такие книги для программистов писали 25 лет назад, потом стали постепенно вводить современные инструменты для разработчика и проектирования. Сейчас чисто кодинг занимает небольшое количество времени в разработке. Ну и выбор Паскаля для обучения программиста 2021-го года тоже выглядит, мягко говоря, несовременным. Вот прочитал человек эту немаленькую книгу, а в большинство компаний его не возьмут даже джуном, ну и смысл тратить время?
Такие книги для программистов писали 25 лет назад, потом стали постепенно вводить современные инструменты для разработчика и проектирования.
Ага, по итогу плюнуть некуда в архитектора-проектировщика попадешь. А код писать некому.
Сейчас чисто кодинг занимает небольшое количество времени в разработке.
Сами же говорили что «Умение программировать подразумевается по умолчанию.» Откуда это умение взять если не учится программировать?
Ну и выбор Паскаля для обучения программиста 2021-го года тоже выглядит, мягко говоря, несовременным.
Вот это уже более предметный разговор. В первом томе автор описал почему выбран Pascal, вон парой комментов выше краткая выжимка.
Вот прочитал человек эту немаленькую книгу, а в большинство компаний его не возьмут даже джуном, ну и смысл тратить время?
Согласен, нужно было мангу про микросервисы читать.
Сами же говорили что «Умение программировать подразумевается по умолчанию.» Откуда это умение взять если не учится программировать?
Учиться-то можно по-разному, например, с изучением инструментария и основных методов проектирования. Книжек таких полно сейчас.
В первом томе автор описал почему выбран Pascal
В 2021-м поводов выбрать Pascal для обучения просто нет, потому что его банально не применяют в коммерческой разработке. Я в 90-х его в универе изучал и уже тогда он нахер нигде не нужен был. Все, что автор про Паскаль писал, можно переделать на тот же Python или Go. После прочтения такой книги молодой разработчик вполне может на джуна устроиться.
Живому человеку куда проще понять «начало» и «конец», чем нагромождение скобочек, и так далее.
Учиться-то можно по-разному, например, с изучением инструментария и основных методов проектирования.Предлагаете абсолютно не знакомому с программированием человеку вкатываться с книги «Совершенный код» или «Паттерны проектирования»?
Все, что автор про Паскаль писал, можно переделать на тот же Python или Go.
Если вы будете обучать студента начиная с Питона, то все связанное с указателями в памяти и адресной арифметикой пройдет мимо него. Не то что бы это было совсем плохо но это закроет для него ветку связанную с embedded, HFT, геймдевом да и кучей еще всего, теми же нативными модулями для Python. Тяжело объяснять устройство ОС, архитектуру процессора и кучу других вещей если все что студенты знают это Python. Хорошо это или плохо? Если ты в 30+ лет меняешь
профессию на IT то наверное хорошо, времени в обрез и важен фокус на практических навыках. Если ты 17 летний лоб в универе, еще не определившийся с тем чем будешь заниматься то лучше выбирать максимально общие курсы. Не даром синонимом хорошего образования является слово фундаментальное.
Ну опять же все относительно, если в 17 лет нужно кормить себя/семью или уже есть четкое понимание что всю жизнь хочешь посвятить Data Science(или получать 300к в наносекунду) то да, берем книжку по питону.
Да, но при этом в книге есть LISP, Scheme и TCL. Я думаю в современном мире стоит студента ознакомить с Python, не вместо паскаля, а дополнительно.
это закроет для него ветку связанную с embedded, HFT, геймдевом да и кучей еще всего, теми же нативными модулями для Python
Не закроет. Разработчики постоянно учатся и постигают новые знания. Знать устройство ОС, архитектуру процессора для разработчика совершенно не обязательно — это мало где востребовано в коммерческой разработке. Зачем тратить время на невостребованные вещи, если можно его потратить на те же базы данных и паттерны проектирования? Я, как наниматель, выберу того, кто больше в базах сечет, чем того, кто знает низкоуровневое устройство ОС и регистры процессора.
Знать устройство ОС, архитектуру процессора для разработчика совершенно не обязательно — это мало где востребовано в коммерческой разработке.
Если исключить из выборки ИТ гигантов с проблемами хайлоада то да совершенно не обязательно. Если не хочется создавать инструменты для других разработчиков то не нужно. Есть много стартапов где вы с этим не столкнетесь и энтерпрайза где это вообще не актуально.
Когда же стартап начнет расти то всегда можно вовремя уйти на +500$ в другой. Все верно.
Я, как наниматель, выберу того, кто больше в базах сечет, чем того, кто знает низкоуровневое устройство ОС и регистры процессора.
Вы смотрите со своей колокольни. То что на ней нету места embedded или геймдеву я уже понял. Все место заняли базы и паттерны. Через 10 лет бывший студент решит что перекладывание json из адаптера в фабрику ему больше не мило и хочется работать в каком-то research проекте или уйти в забористый хайлоад с тем же Растом. Тут и окажется что его знаний недостаточно, а паттернами эту дыру не закроешь. Нужно учить с нуля и окажется что в 30 лет абсолютно новые вещи и учатся не так легко как в 18 и обязательств уже побольше. А был бы у него фундамент, пускай и почти забытый, было бы гораздо проще.
Вы не в теме. Не умея программировать и понимать как программа работает на архитектуре, - вы никогда не станете хорошим разработчиком, причем неважно на каком языке программирования и в любой прикладной области, не говоря о том, что вы не будете понимать как работает программа, как ее оптимизировать, модифицировать, исправлять и многое многое другое. Без базы у вас не будет понимания от слова совсем. А клепать скрипты большого ума не нужно, но таких криворучек и так хватает, они не в цене, если кому нужно настоящее качество, а не криворукое и уязвимое гoвно. Причем любому адекватному человеку это очевидно. Вы либо некомпетентны, либо целенаправленно вводите людей в заблуждение.
Если в обучение поставить телегу впереди лошади то получим «спеца» по фигурному написанию yaml
Прям до слёз, учитывая, что я сейчас как раз с Home Assistant разбираюсь…
Раскрою:
— когда знание инструментов важнее знания принципов
— когда копипаста — нормальное явление в проекте
— когда менеджерство и софт скиллы (управление тех. долгом и легаси кодом) — важнее элементов computer science.
Тогда «управление техдолгом» становится «нам нужно 4 спринта на рефакторинг» вместо «я тут в пятницу вечером написал анализатор нашего легаси, чтобы искать баги не заглядывая в IDE, можете гонять его перед тестами». Само собой это работа для «чистого программиста»
Процитирую бессмертное:
«Где же работает типичный настоящий программист? Какие программы достойны таких талантливых индивидумов? Вы можете быть уверены, что настоящий программист не умрет за написанием программы „Зарплата“ на Коболе или сортируя список почтовых отправлений журнала People. Настоящий программист желает задачи с важностью землетрясения.
Настоящие программисты работают на национальную лабораторию в Лос-Аламосе, создавая программы на супер ЭВМ Cray-1, моделирующие атомную бомбу. Они так же работают на Агенство по Национальной Безопасности, расшифровывая передачи русских.»
Вы не поверите, но подавляющее большинство вот этих вот "тулзов и сервисов", которые вы упомянули, спроектированы и написаны как раз такими вот программистами. Которые понимают и знают систему от и до, от теории и структуры памяти до каких-то выскоуровневых вещей.
А вот эти вот ужасы современных ИТ, когда драйвер мышки занимает гигабайт, а для того, чтобы просто отобразить без тормозов на экране таблицу из пары тысяч записей, нужно покупать многопроцессорные ПК, написали, в основном, вот эти разработчики, которых вы упоминаете. Которые копируют из SO и подключают 10 тысяч библиотек на JS, чтобы отобразить 2 строчки текста.
Автор этих книг — наш отечественный Столлман, такой же техноманьяк-параноик. Что нисколько не умаляет его заслуг.
P.S. Приведу простой пример программистов и разработчиков: возьмите любой современный мессенджер типа Skype или любую другую дрянь на Electron. Это гигантские, невероятно кривые и тормозные комбайны, которые сжирают все ресурсы компа, чтобы просто отобразить пару строк текста на экране и смайлик. В 90-е годы такие программы занимали несколько десятков килобайт и работали мгновенно на древнем железе.
Вот нашелся один наш соотечественник, которого эта ситуация тоже настолько не устроила, что он написал свой язык для этого вместе с компилятором и реализовал на нем настоящий многопротокольный клиент весом 300 килобайт (!).
Недавно был только первый релиз, пока только что-то одно он подключил. Но все равно этот проект стоит упоминания и помощи: https://volt-app.com/
Я смотрю на скорость прокрутки сообщений и понимаю, что это писал именно программист и именно таким это и должно быть — и скорость работы и размер программы. А большинство современных разработчиков нужно перепрофилировать в более полезных специалистов, потому что они кроме энтропии ничего не увеличивают в этом мире.
volt-app.com
vlang.io
github.com/vlang/ui
Ну и всякие github.com/vlang/doom
Стоит прочитать всё на этих сайтах (там немного), чтобы понять, насколько Alex крут и насколько далеки от него все эти «разработчики». Люблю таких ребят, сам таким так и не стал, но всегда ими восхищался.
Не удивлюсь, если он тут тоже зареган :)
Думаю, все хотели бы быстрый, удобный, мультипротокольный и мультиплатформенный мессенджер. Так что стоит помочь его проекту, рублем или другим вкладом.
Ну и в целом языку V и его библиотекам.
pico.v на этом языке еще и топ 1 в plaintext benchmark. Не знал что этот язык проект одного человека.
например, чистые функции на самом деле имеют побочные эффекты, заявлено что бинари V не зависят от динамических библиотек (как в GO), но это также неверно.
подробнее тут:
news.ycombinator.com/item?id=25511073
christine.website/blog/vlang-update-2020-06-17
Такой себе Виталий Луговский на минималках, если тут еще кто-то помнит, кто это такой :)
Когда же автор блочит нескогласных, или просто откровенных диллетантов — это уже другая мотивация…
Жаль, таких как Виталий сейчас не делают )
никто не банится, очень открытое коммьюнити, заявлений про независимость от dynamic libs не было, и системная libc (system api) такая себе зависимость
Автоматически сконвертированный из C в V Doom — компиляция меньше секунды.
Блин, ну почему все программисты не такие? :)
Пожалуйста, прекратите рекламировать V, это ненастоящий проект, созданный исключительно ради того, чтобы собирать донаты.
Компилятор не поддерживает больше 50 тысяч операторов в main, лексер проглатывает непарные скобки, проблема управления памятью "решена" тем, что память никогда не освобождается, функции для скачивания файла из стандартной библиотеки тупо вызывают curl через шелл, причём без экранирования.
Даже если "исправил", это всё равно не отменяет того факта, что дата релиза 0.2 постоянно сдвигается.
Компилятор не поддерживает больше 50 тысяч операторов в main
а зачем?
лексер проглатывает непарные скобки
нет
память никогда не освобождается
https://www.youtube.com/watch?v=gmB8ea8uLsM
функции для скачивания файла из стандартной библиотеки тупо вызывают curl через шелл, причём без экранирования.
нет, используются openssl/schannel
это ж надо такую дизинфу продвигать
Компилятор не поддерживает больше 50 тысяч операторов в main,
А более 50 тысяч глобальных переменных тоже не поддерживает, а то тут инженеры из Тойоты уже начали переживать... )))
спасибо, приятно :)
Вот нашелся один наш соотечественник, которого эта ситуация тоже настолько не устроила, что он написал свой язык для этого вместе с компилятором и реализовал на нем настоящий многопротокольный клиент весом 300 килобайт (!).
Стыдно иметь таких соотечественников. А еще печальнее наблюдать, как подобные вам ведуться на подобного рода разводы.
Вы хоть пробовали пользоваться этим самым многопротокольным мессенджером? Дело в том, что написан он вовсе не на V, а на js. И вся работа бинарника заключается в том, чтобы запустить системный webview и открыть в нем статически поставляемое в этом бинаре веб-приложение.
Надо ли говорить, что такое приложение не кроссплатформенно, и именно этим отличается от электрона, который не использует системный webview, а тащит его с собой именно для кроссплатформы? Надо ли говорить, что именно по этой причине спустя два года после релиза этот самый расчудесный многопротокльный мессенджер доступен только под MacOS? И что даже обещание в 300Кб на запускалку (sic!) не соблюдается - она весит все 600. Просто он даже не стал удалять комментарии из js кода и как-либо его минифицировать. Возможно, что и js-то писал не он, а взял чье-то готовое.
Надо ли говорить, что написав такую запускалку на любом другом компилируемом в исполняемый файл языке ты получишь тот же самый эффект?
Думаю, все хотели бы быстрый, удобный, мультипротокольный и мультиплатформенный мессенджер. Так что стоит помочь его проекту, рублем или другим вкладом.
Не быстрее любого другого мессенджера написанного на таких же веб-технологиях как и этот. Не удобнее их. И точно не лучше. Более того, это весьма урезанная куцая поделка с очень посредственным js-кодом. В нем нет и сотой доли фич, присуствующих в современных мессенджерах, даже написанных на тех же веб-технологиях.
Очень грусно наблюдать как вас обманули.
Забавно, все три тома состоят из одинакового количества страниц.
Знания никогда и никакие лишними не бывают. Если ты освоил любой язык программирования на отлично, то и любой другой, при необходимости его на работе, освоишь быстро и без больших проблем.
Не нравится — напиши и выложи свои.
То есть критиковать нельзя, а я должен пойти писать свои книжки? Интересная у Вас логика. Вот представьте, Вы приходите в ресторан и заказываете еду. Вам не нравится, Вы говорите официанту, а он такой — «Ну не нравится, открывайте свой ресторан и там готовьте». Это нормально?
И начинает именно с азов, с Ассемблера, Си, устройства ОС.
Андрей Столяров выложил в свободный доступ второе издание книги «Программирование: введение в профессию»