LINUX.ORG.RU

Вышло издание 2,92 книги «Программирование: введение в профессию» А. В. Столярова

 , , ,

Вышло издание 2,92 книги «Программирование: введение в профессию» А. В. Столярова

4

6

Тихо и незаметно 30 апреля 2026 года вышло издание 2.92, которое наконец включает в себя читаемый текстовый слой.

Исправлены опечатки и ошибки, обнаруженные в предыдущих изданиях, в частности 2.91 (где введена кликабельная навигация) и 2.9 (первое чисто электронное издание).

Книга предназначена для самообучения основам программирования и в отличии от многих других изданий предполагает фундаментальный подход — вначале основы дискретной математики и использования GNU/Linux или BSD с командной строкой, затем паскаль, потом ассемблер и только потом Си, системное программирование и альтернативные парадигмы (функциональное, логическое и так далее).

Автор книги считает, что только такой порядок обеспечивает полноценное обучение программированию, и обосновывает такой подход в методическом предисловии к первому тому.

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

>>> Ссылка на страницу издания

>>> Альтернативные способы скачивания

>>> Новость на сайте автора

★★★★★

Проверено: dataman ()
Последнее исправление: CrX (всего исправлений: 10)
Ответ на: комментарий от bugfixer

А сами не видите? Там и корки, и бесконечные циклы, полный букет.

Где конкретно? Эти функции должны считать длину 0-терминированной строки. Конечно если нет 0 терминатора, то и ответ будет неверный. Но такие строки почти в любом коде вызовут проблему.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

Где конкретно?

Вы правда хотите чтобы я вам всё разжевал?? Не разочаровывайте меня. Утверждение следующее: я могу сформировать и подсунуть в эти функции такую валидную C-string что (а) стандартный libc’шный strlen() вернёт её корректную длину, и (б) варианты от Столярова будут или падать, или впадать в кому, или выдавать неправильный результат.

bugfixer ★★★★★
()
Ответ на: комментарий от wandrien

На самом деле товарищ скорее всего хотел про off-by-one в #3 услышать, но это совсем тривиальными (и дешёвыми, что немаловажно) unit-tests ловится, в отличие от…

bugfixer ★★★★★
()

А автор сих опусов не может сделать нормальный A5 для электронных книг? Как читать его глубокие мысли в дороге?

bookman900 ★★★★★
()
Ответ на: комментарий от mister_VA

Си (С++, Go, Rust, Java, Питон и т.п.) не годен как ДИДАКТИЧЕСКИЙ инструмент в пропедевтике программирования.

А что скажете насчет целевых языков программирования? R, Julia например...

bookman900 ★★★★★
()
Ответ на: комментарий от Xenius

Ну как, сверхдлинные - 2GB (на x86), и таки это не что-то из области фантастики (human-readable dump какой-нибудь базёнки, например). Нечасто, но бывает.

bugfixer ★★★★★
()
Ответ на: комментарий от ptah_alexs

https://www.enet.ru/win/cherezov/forthcpu/misc.html

в целом пределом оказываются процы с нулём инструкций https://en.wikipedia.org/wiki/One-instruction_set_computer т.е так как команда только одна не нужно место под её опкод - т.е похожее на последовательность вызовов в косвенном шитом коде по факту вся семантика оказывается либо в полях либо в очень длинных элементарных(в частности модифицируй и прыгни) последовательностях

познавательно посмотреть phdp-1 ? там было 2.7Ктранзисторов и 3Кдиодов и всего 32 опкода

https://obsolescence.dev/pidp1-sw/PDP-1-Handbook.pdf

ваще cisc предшествовали «risc» Ж)

qulinxao3 ★☆
()
Ответ на: комментарий от bugfixer

Не обязательно 2Gb, int может быть и 2 байта, соотв. 32767 байт строка. Если в строке хранится utf-8, то это может оказаться и совсем короткая строка с т.з. символов.

soomrack ★★★★★
()
Ответ на: комментарий от Enthusiast

Не понимаю почему народ так набросился на писателя тут.

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

SkyMaverick ★★★★★
()
Ответ на: комментарий от mister_VA

Си (С++, Go, Rust, Java, Питон и т.п.) не годен как ДИДАКТИЧЕСКИЙ инструмент в пропедевтике программирования.

Питон годен, MIT тому пример. Просто лично тебе лень переписывать свои замшелые методички.

liksys ★★★★
()
Ответ на: комментарий от anonymous_incognito

Что у людей могут быть потребности и средства их решения соответственно сильно выходящие за рамки программ, которые запускали на 286-х и 386-х компьютерах, он как-то не воспринимает что ли

Это типичная ошибка идиота в медицинском смысле - ему буквально не хватает интеллекта что поставить себя на место человека, решающего нетривиальные задачи: как раз потому что их он не то что решить, постановку задачи и то не всегда понять может. Естественно признаться даже самому себе в интеллектуальном ничтожестве ему не хватает яиц - поэтому он и называет всех кто умнее его дебилами и гордо окукливается от чужого мнения в крохотном инфопузыре с задачами 30-40 летней давности. Как раз из того времени когда молодость хоть как-то позволяла ему прикладывать хоть какие-то интеллектуальные усилия.

zabbal ★★★☆☆
()
Ответ на: комментарий от Xenius

С указателями всё очевидно. А у питона нет никаких значков указывающих на указатель

И вот это вот искренне считает что может спорить с программистами о ЯП и обучении программированию. Само собой он не раздупляет почему над ним уже в голос ржут :-D :-D :-D

zabbal ★★★☆☆
()
Последнее исправление: zabbal (всего исправлений: 1)
Ответ на: комментарий от anonymous_incognito

Ничего необычного, типичная позиция «потребности и желания, которых нет у меня, не должны возникать у других». Тут на ЛОРе таких персонажей с добрый десяток: у одного 15 ГБ трафика за месяц неиронично хватит всем, а кто тратит больше — неадекваты, у другого невозможно «целый терабайт» заполнить данными, у третьего мониторы больше 19" используют только для профессиональной работы с чем-то там, и обычному человеку это не нужно, ну и так далее. Вот и тут такой же менталитет, только конкретно с процессорами.

CrX ★★★★★
()
Ответ на: комментарий от qulinxao3

и было это уже к середине 90ых

https://www.greenarraychips.com/ - оно и сейчас вполне живо

https://github.com/howerj/forth-cpu - и даже FOSS варианты есть, хотя и гораздо более простые конечно

Причём не удивлюсь если в эпоху ИИ их ждёт ренессанс - чем вертеть стек туда-сюда в голове гораздо проще поручить LLM нагенерить нужный код на Forth.

zabbal ★★★☆☆
()
Ответ на: комментарий от liksys

если ты строишь свои рассуждения на основе неверной концепции, все рассуждения оказываются ложными

Вот, кстати, не соглашусь. Из ложной посылки может следовать что угодно - как истина, так и ложь. Логическая импликация так работает просто. Тут уж как повезёт.

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

Вот если бы из ложной посылки действительно всегда следовали исключительно ложные - это с большей вероятностью прочищало даже недалёкие мозги. Однако маемо шо маемо :-\

zabbal ★★★☆☆
()
Ответ на: комментарий от zabbal

кретин выбрал откровенную дичь в качестве базиса и случайно результат оказался истинным

Тогда получается, что тут вообще нет какой-то особой связи между базисом и результатом. Собственно, как ты и написал.

Ну тогда всё еще хуже :D

liksys ★★★★
()
Ответ на: комментарий от liksys

тут вообще нет какой-то особой связи между базисом и результатом

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

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

Причём в школе про это даже упоминали, но черезчур вскользь - у большинства это явно затерялось на фоне прорвы остальной информации. А жаль - вот как раз этот момент стоило бы педалировать на протяжении всей юности с особым цинизмом: чтобы потом о натуральных зомби на форумах (и не только) не спотыкаться :)

zabbal ★★★☆☆
()
Ответ на: комментарий от Enthusiast

сказать ничего не могу, ибо не читал

Не понимаю почему народ так набросился на писателя тут

Вот вообще никаких идей в чём может быть причина?

zabbal ★★★☆☆
()
Ответ на: комментарий от wandrien

Там синдром Eddy_Em во весь рост, а не желание быть нетакусей.

Minoru ★★★
()
Ответ на: удаленный комментарий

Никак - у него их нет.

Ну совсем зачмырили человека...

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

А тут феномен, что его опус всё же относительно неплохой учебник для начального введения в программирование плюс и задачник, что тоже ценно, . Даже несмотря на отдельные странные и вредные места в нём. Причём учебник пропагандирует OpenSource и Linux, официально бесплатно выложен.

Откровенно говоря, совремённые (и даже не совсем совремённые) вменяемые аналоги даже как-то трудно припомнить. Они или с уклоном в конкретный язык программирования или в математику или какую-то ещё узкую относительно тему. SICP, к слову, аналогом не является, в этом курсе скорее учат алгоритмистике и началам Computer Science, а не вот именно программированию. Курс хороший и нужный, но не вместо Столярова.

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

И тем не менее, ЧСВ и своеобразный стиль мышления привели к наличию в книге сомнительных мест, как и вообще в его воззрениях на программирование в целом.

anonymous_incognito ★★★★★
()
Ответ на: комментарий от liksys

Питон годен, MIT тому пример. Просто лично тебе лень переписывать свои замшелые методички.

Есть как минимум два разных подхода к изучения чего-либо вообще. Подход от абстракций к деталям и наоборот от деталей к абстракциям. По всей видимости это ещё о психики зависит.

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

anonymous_incognito ★★★★★
()
Ответ на: комментарий от anonymous_incognito

Ну совсем зачмырили человека…

Да как-то не жалко, учитывая, что он каждому второму обещает при встрече морду набить или утопить в бочке с фекалиями.

VanyaZay
()
Ответ на: комментарий от anonymous_incognito

что программисты, которые начали с него и/или web-программирования они зачастую очень плохо воспринимают что-то низкоуровневое

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

VanyaZay
()
Ответ на: комментарий от zabbal

Вот вообще никаких идей в чём может быть причина?

Нет. В чем заключается заблуждение писателя, на твой взгляд?

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

Даже в станках «АСМЛа», печатающих самые современные микросхемы в мире, графическое взаимодействие с пользователем сильно напоминает времена «Окон-3.11». И ничего, всех все устраивает. Практическое подкрепление теории практикой добавить и все придет в равновесие.

Enthusiast ★★★☆
()
Ответ на: комментарий от anonymous_incognito

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

liksys ★★★★
()
Ответ на: комментарий от anonymous_incognito

просто шиз был с исключительно бредовыми идеями

Дык это не просто шиз, а очень смешной шиз с настолько раздутым ЧСВ что подрывается в лоскуты от тривиального багрепорта - ржать над подобными лулзами (и высерами его тугих ученичков) ЛОР никогда не устанет.

вменяемые аналоги даже как-то трудно припомнить

Тебе роскомпозор досрочно инет отрезал? Вот уж чего-чего, а литературы, статей, заметок и учебников по программированию и всему что с этой профессией связано в сети просто прорва.

SICP, к слову, аналогом не является

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

устройство компьютера и ОС и ассемблер и Си и разные парадигмы программирования

Всё это и на порядки больше доступно через тот же MIT OCW и его аналоги. Хотя ассемблер нужен современному программисту как рыбе зонтик.

При этом в эпоху LLM любому желающему доступен бесплатный персональный препод, готовый 24/7 отвечать на вопросы, приводить примеры и терпеливо разъяснять непонятные места.

привели к наличию в книге сомнительных мест

Она практически вся из них состоит.

zabbal ★★★☆☆
()
Ответ на: комментарий от Enthusiast

Нет.

Тяжёлый случай. Те, кто книгу прочитал, высказывают претензии к её автору. Ты книгу не читал и тебе она норм. Ты напрягись, сосредоточься, подумай - может есть какой-то фактор, отличающий тебя от тех, кто высказывает претензии?

zabbal ★★★☆☆
()
Ответ на: комментарий от zabbal

Хотя ассемблер нужен современному программисту как рыбе зонтик.

Позволю себе не согласиться: умение читать асм - крайне полезный практический навык. ПисАть на нём что-то больше вставок нынче моветон, да. Да и интринзиков обычно хватает.

bugfixer ★★★★★
()
Ответ на: комментарий от zabbal

У Лёхи Фридмана на днях вышел подкаст с vlc/ffmpeg дуэтом авгуров,

Асм в части все есть кортеж битов очень полезная херистика

qulinxao3 ★☆
()
Ответ на: комментарий от liksys

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

У тебя вроде и неплохо, но

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

В учебнике он и не усирается. Там про Rust вообще ничего. Но прежде чем говорить о структурировании проекта и декомпозиции, надо чтобы обучаемый уже имел опыт написания программ, причём, по-хорошему, на 1000-2000 строк хотя бы. Иначе бессмысленно: в одно ухо влетит, в другое вылетит. Типичная, кстати, ошибка, когда человеку, едва научившемуся программировать «Hello world!» пихают ООП.

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

А вот тут есть проблема. Сейчас, наверное, любое обучение программированию будет на первых порах оторвано от реальности. В 80-х - начале 90-х было сильно проще сразу же увидеть интересный результат своего кодописания.

И мне вслед за Столяровым представляется, что наверное, Паскаль при всех минусах всё же чуть ли не единственный вариант плавно ввести в программирование, не слишком далеко отходя от низкого уровня.

Например, я уже неоднократно описывал общую идею курса для программирования, с оглядкой на MIT (они там используют питон для старта). Берем питон, показываем как пишутся алгоритмы на высоком уровне, как проектировать софт и декомпозировать задачу.

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

Но всё же, если паскалю можно предъявить, в основном только академичность и малую востребованность сейчас, то у Python для новичков есть недостатки похуже:

1) Зависимость исполнения кода от его форматирования. Кто-то считает, что так приучает сразу писать хорошо форматированный код, но и засоряет мозги, делая из форматирования синтаксический элемент.

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

3) Вообще работа с Python фактически требует правильного администрирования. Это конечно не особо заметно на ученических программах, но всё же.

4) Питон, всё-таки для начинающего чересчур сильно скрывает абстракции. Их потом можно показать на Си, но подходы от первого языка сильнее всего в мозг проникают. А концепция указателей, сточки зрения обучения, вообще вряд ли где-то лучше, чем в Паскале сделана. Так же как и типы данных, которых в Питон не то, чтобы вовсе нет, но явно не в том виде, чтобы давать их начинающему. В результате, оно может и проще для ученика, если не морочить ему голову типами данных, но потом может оказаться трудно правильно усвоить.

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

Опять ты вперёд забегаешь. Какая бизнес-логика, какие критичные к скорости участки? Человеку для начала надо просто научиться программировать и набить шишек, решая задачи. При этом приучаясь к более-менее правильному стилю и подходам.

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

Питон я бы давал уже третьим языком программирования.

anonymous_incognito ★★★★★
()
Последнее исправление: anonymous_incognito (всего исправлений: 3)
Ответ на: комментарий от anonymous_incognito

Pascal - Asm - Python.

С таким подходом мы получим то, что имеем сейчас в среде ML-программистов: «Покажите мне как запустить PyTorch, а то мне непонятно, как здесь программировать?! Мама!»

VIT ★★★
()
Ответ на: комментарий от anonymous_incognito

Я об этом и говорю, последний язык запоминается больше всего. Я даже больше скажу, они и Python то уже не знают. Сейчас собеседования ведём, на вопрос какие языки программирования знаете отвечают PyTorch, TensorFlow, немножко Keras. Улёт и свесил ноги. И это люди из ведущих школ, что там во второй сотне я даже думать боюсь.

VIT ★★★
()
Ответ на: комментарий от zabbal

Дык это не просто шиз, а очень смешной шиз с настолько раздутым ЧСВ что подрывается в лоскуты от тривиального багрепорта - ржать над подобными лулзами (и высерами его тугих ученичков) ЛОР никогда не устанет.

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

Тебе роскомпозор досрочно инет отрезал? Вот уж чего-чего, а литературы, статей, заметок и учебников по программированию и всему что с этой профессией связано в сети просто прорва.

Прорва, а чтобы до кучи в один учебник было собрано как-то не особо припоминается.

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

SICP - это скорее Computer Science, введение в него, а не программирование. Несколько в другой плоскости вообще.

При этом в эпоху LLM любому желающему доступен бесплатный персональный препод, готовый 24/7 отвечать на вопросы, приводить примеры и терпеливо разъяснять непонятные места.

Вот тут даже не знаю. С одной стороны, я сам LLM использовал для объяснения, с другой - не уверен, что для совсем новичка (на что 1-й том ориентирован) хорошо.

anonymous_incognito ★★★★★
()
Ответ на: комментарий от VIT

Сейчас собеседования ведём, на вопрос какие языки программирования знаете отвечают PyTorch, TensorFlow, немножко Keras. Улёт и свесил ноги.

Не отличать ЯП от фреймворка - это мощно, но дело тут не в последнем языке, а вообще недостатке образования. Может просто от волнения заговорились?

anonymous_incognito ★★★★★
()
Ответ на: комментарий от anonymous_incognito

Это сейчас такие ML-программисты. Боюсь, что это уже тенденция и ничего не сделать. Workshop тут проводили, 300 человек, предполагаются, что имеют опыт использования больших машин. Спрашиваем, кто использует в работе MPI? Ответ - примерно треть. Ну хорошо, а остальные две трети? NCCL.

Ага, на 50000 GPU. NCCL.

VIT ★★★
()
Ответ на: комментарий от anonymous_incognito

В учебнике он и не усирается.

Усирается, но не про раст.

Но прежде чем говорить о структурировании проекта и декомпозиции, надо чтобы обучаемый уже имел опыт написания программ, причём, по-хорошему, на 1000-2000 строк хотя бы.

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

Типичная, кстати, ошибка, когда человеку, едва научившемуся программировать «Hello world!» пихают ООП.

ООП можно избегать до поры, до времени, пока человек не освоится с функциями. Далее ООП на примере питона объясняется элементарнейше.

Зависимость исполнения кода от его форматирования. Кто-то считает, что так приучает сразу писать хорошо форматированный код

И это хорошо. Мои однокурсники были не в состоянии понять, зачем нужно форматирование, и постоянно писали стены говнокода.

Нестабильность библиотек и даже базовых элементов языка.

Ерунда полнейшая. Ломающие изменения происходят только в изкоробочных библиотеках, где ведется активаная разработка, типа asyncio. Или во внутренностях, куда ты по определению лезть не должен. Всё остальное стабильно. Это я как человек, поддерживающий большой проект на питоне, говорю.

Вообще работа с Python фактически требует правильного администрирования.

Ничего подобного. Ставишь - запускаешь, всё.

Питон, всё-таки для начинающего чересчур сильно скрывает абстракции.

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

Опять ты вперёд забегаешь. Какая бизнес-логика, какие критичные к скорости участки?

В том же треде объяснял. Например, студент выучил базово питон и сишку. Далее, даем ему в качестве курсовой задание, которое невозможно выполнить на одном питоне, чтобы уложиться во временные рамки. Студенту придется писать кусок кода на си и интегрировать его с питоном.

liksys ★★★★
()
Ответ на: комментарий от VIT

Так что не знаю, о чём господа хорошие вы тут рассуждаете, реалии таковы, что скоро так назыаемые программисты будет мышой в VS Code с Клодом возить и кто лучше мышой возит - тот суперпрограммист.

VIT ★★★
()
Ответ на: комментарий от liksys

Далее ООП на примере питона объясняется элементарнейше.

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

И это хорошо. Мои однокурсники были не в состоянии понять, зачем нужно форматирование, и постоянно писали стены говнокода.

По мере накопления опыта и набивания шишек можно естественно прийти к необходимости стиля.

Ломающие изменения происходят только в изкоробочных библиотеках, где ведется активаная разработка, типа asyncio. Или во внутренностях, куда ты по определению лезть не должен. Всё остальное стабильно. Это я как человек, поддерживающий большой проект на питоне, говорю.

А я как, занимающийся как раз ML и даже пару курсов от DLS по ним прошедших, скажу, что меня задолбало, когда примеры кода, ещё несколько лет назад рабочие, сейчас не работают и надо подбирать нужные версии библиотек. Это конечно не столько свойство языка, сколько привычки писателей этих библиотек, даже может конкретно специфика говнокодерства в ML, но задолбало. В итоге в каком-то смысле и свойством языка, вернее его экосистемы стало, иначе не возникли бы venv и другие виртуализации - я это имел ввиду, говоря о необходимости администрирования. Там ещё и зависимости от других библиотек могут быть.

Маленький, но характерный пример: torchcodec https://pypi.org/project/torchcodec/ Обрати внимание внизу на совместимость его версий с версиями torch, питона вообще и описааний как правильно инсталлировать в сочетании с ffmpeg.

А теперь представь себе, что таких библиотек для программы много и возникает что-то вроде квеста по подбору работающей конфигурации. Практически я дошёл до того, что чуть ли не под каждую программу на Python сразу отдельный venv делаю.

Справедливости ради, это всё конечно далеко от обучения программированию и для реально сложных задач, наверное на любом языке сейчас будут проблемы с library hell

anonymous_incognito ★★★★★
()
Последнее исправление: anonymous_incognito (всего исправлений: 4)
Ответ на: комментарий от liksys

Далее ООП на примере питона объясняется элементарнейше.

Вставлю пять копеек, что и на ООП не надо сильно упорствовать, и сначала объяснить границы его применимости. А то заманают потом этажи и фабрики городить так, что монгольский йенг сломаешь, пока поймёшь кто на ком стоял.

SkyMaverick ★★★★★
()
Ответ на: комментарий от bookman900

А что скажете насчет целевых языков программирования? R, Julia например…

Вы сами и написали «целевые». Паскаль был придуман как язык для записи дидактических примеров, т.е. его цель – ввести в программирование.

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

mister_VA ★★★
()
Ответ на: комментарий от liksys

Питон годен, MIT тому пример.

Там, применяя Питон, учат программированию или там с ходу учат программировать на Питоне? Это 2 большие разницы.

Ну а так, при введении в программирование для иллюстрирования использовали много какие языки, от Бейсика до ассемблера или вообще специально выдуманных и нигде более не использующихся языков. Меня вот учили через блок-схемы и Фортран IV.

Питон как популярный язык часто предлагается как первый, вот только учить программированию на встроенном в LO или какую игрушку Питон – это обучать только и только использовать именно такой встроенный именно туда Питон. А я часто встречал такой подход применительно к несчастной школоте.

mister_VA ★★★
()
Ответ на: комментарий от anonymous_incognito

Но в нём слабая инкапсуляция, нет деления на публичные, приватные, защищённые методы и классы

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

неявная передача self

Он именно что явный, о чем ты?

По мере накопления опыта и набивания шишек можно естественно прийти к необходимости стиля.

А можно сразу заставить нормально писать, и обучение пройдет легче, потому что именно запутанный write-only код и является стоппером на пути обучения сложным алгоритмам.

Справедливости ради, это всё конечно далеко от обучения программированию

Вот именно. Пока ты находишься в рамках простых или средних задач, ты никогда в жизни не встретишься со сломанным API. А когда встретишься - уже пора и самому с мануалами разбираться. Именно в рамках обучения всё стабильно.

liksys ★★★★
()
Ответ на: комментарий от bugfixer

умение читать асм - крайне полезный практический навык

В крайне узкой нише. Подавляющее большинство программистов видят его на каких-нибудь дурацкий курсах в первый и последний раз.

zabbal ★★★☆☆
()
Ответ на: комментарий от liksys

Питон годен, MIT тому пример.

просто школота вчерашняя, которая повалила потому что «компуктеры - это круто» SICP не осиливала. не было бы питона, в мит был бы бейсик

Welle
()
Ответ на: комментарий от anonymous_incognito

От багрепортов в виде ссылок на опечатки или технические ошибки он не подрывается

http://stolyarov.info/node/428 - нам-то не гони :)

SICP - это скорее Computer Science, введение в него, а не программирование.

Это именно что программирование - в классическом смысле университетского курса инженерной дисциплины, для людей с базовым математическим образованием. А не в смысле программирования как «освой новый фремворк за полчаса чтобы пройти быдлокод-собес на галеру».

не уверен, что для совсем новичка (на что 1-й том ориентирован) хорошо

Для совсем новичка сложно придумать что-то хуже чем 1й том Столярика с его высосанными из… гхм.. ну пусть будет пальца определениями, фимозным идиотизмом «делай так потому что так сказал я» и языком выбранным по принципу «я потратил время на его изучение и мне обидно что остальным его можно не тратить».

zabbal ★★★☆☆
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.