LINUX.ORG.RU

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

 , , , ,


1

4

Вчера, 14 января 2025 года на сайте автора был опубликован первый том нового издания известной книги «Программирование: введение в профессию» за авторством Андрея Викторовича Столярова, известного на данном портале как @Croco.

Новое издание является исключительно электронным и имеет номер 2,9, а не 3. Номер 3 получит полноценное типографское издание на бумаге, если оно состоится.

>>> Подробности



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

Может есть какие-то аргументы по существу - чем конкретно хорош данный pdf?

Подход к программированию, исключающий сомнительные современные «технологии», например C++ рассматривается в его оригинальном виде, до появления стандартов и без STL.

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

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

О.

Этот пост таки можно считать чтстосердечным признанием что zeev == croco 🤣

guyvernk
()
Ответ на: комментарий от alysnix

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

Ни в какие музеи i386 не канул. В части про паскаль привязки к i386 нет, а в части про ассемблер он выбран просто как наиболее доступный. Ардуину какую-нибудь ещё надо купить, как и одноплатный компьютер на ARM, а что-нибудь на x86 наверняка у кого-то дома есть и пофиг 64-битная ОС или 32-х, если специально в ядре возможность запуска 32-битных прог не выпилена.

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

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

Автор судя по всему застрял в 1985 году. Для современных ЦПУ от фирмы Штеуд чтобы понять, как программа будет выполняться на них нужно знать в первую очередь микроархитектуру этих ЦПУ, а не ассемблер.

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

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

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

напиши мне оглавление книги по программированию из 12 глав. и он вам напишет правильное оглавление. потому что чатгпт - умный.

Это троллинг такой, да? Эти чаты, к сожалению, не являются полноценными ИИ, это всё ещё миксер текста. Может он получше древней Alice которой уже лет так 40, если не больше, но всё ещё ближе к ней, чем к чему-то «умному».

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

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

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

думал что компиляция - это просто проверка корректности программы без запуска кода

а столяров заставил вас думать иначе?

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

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

а ты все еще думаешь, что после компиляции получается готовая программа и запускается штоле? батюшки святы…

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

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

Не поверите, но на этом можно и остановиться: люди в принципе склонны преувеличивать необходимость (и полезность) IDE как таковой. И самые талантливые программеры которых я встречал пишут в условных «блокнотах», причём обвинить их в непрофессионализме или непродуктивности было бы ну очень сложно.

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

что-нибудь на x86 наверняка у кого-то дома есть

Что-нибудь на ARM есть в кармане. И дети на этом кодят.

Ещё не на x86 есть дешёвые ТВ-приставки, домашние маршрутизаторы, телевизоры…

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

ассемблер, чтобы понять внутренности программы

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

Чтобы программист понимал о машине то, что нужно для её программирования, есть книги вроде Principles of Operation

https://www.ibm.com/support/pages/sites/default/files/inline-files/SA22-7832-00.pdf

Architecture Programmer’s Manual etc.

https://upload.wikimedia.org/wikipedia/commons/3/30/AMD_x86-64_Architecture_Programmers_Manuals.jpg

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

Но например категорически не согласен с некоторыми его мыслями -например про то что STL в Си++ это кака.

И нафига вам этот STL? Структуры данных можно самостоятельно делать через указатели и всякие там записи.

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

Что-нибудь на ARM есть в кармане. И дети на этом кодят.

Давай я посмотрю как ты на современном устройстве которое влезает в карман и которое можно купить в обычном комп-магазине (то есть при всём уважении, не PinePhone каком-нибудь, который хз как добыть) напишешь и запустишь код на ассемблере ARM + описание всех шагов и код того что ты запустил.

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

И самые талантливые программеры которых я встречал пишут в условных «блокнотах»,

основная масса софта делается не самыми талантливыми. рассчитывать на таланты в такой индустрии как софт - просто нелепо. талантов столько нет.

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

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

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

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

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

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

Столяров предлагает i386. Я думаю что это самый универсальный вариант, поскольку можно изучать его и на старом компе, при желании. А хотя ARM-машинки и довольно распространены, но порутовать и запустить нативный код - это не для слабых духом. Так зачем дополнительные сложности?

Итак, жду программу на ассемблере для ARM запущенную на доступном простому юзеру устройстве (то есть не экзотике вроде Pine Phone)

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

Для обучения можно использовать микроконтроллеры. Платы с RP2040 в озоне около 500 р., варианты с корпусом и экраном на aliexpress около 1500 р. Гугль находит переведенные на русский книги по программированию на ассемблере для RP2040 (в книге Брюса Смита «Ассемблер для Raspberry Pi. Практическое руководство» порадовало использование vim для редактирования программ). На устройствах с RP2350 кроме ARM-программ можно запускать программы для RISC-V.

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

порутовать и запустить нативный код - это не для слабых духом

Машинки на x86 тоже нужно порутовать, чтобы запустить на нативный код?

чтобы понимать как устроен исполнимый файл

нужно изучать устройство исполнимого файла

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

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

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

Это вот всё нужно делать, вместо того чтобы просто открыть файл в текстовом редакторе, взять nasm и запустить?

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

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

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

исключающий сомнительные современные «технологии»

Это называется «не осилил».

с рассмотрением только тех возможностей, которые нужны начинающему программисту

ассемблер

LOL!

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

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

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

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

Но зачем? МК требуют компа чтобы что-то на них делать. Так почему бы это не делать сразу на компе без дополнительных затрат?

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

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

Я сам андроидом не пользуюсь, поэтому попробовать не могу, но уверен, что никаких проблем не возникнет.

Если говорить про конкретный софт - я бы попробовал установить termux и использовать там clang. Там и ассемблер, и линкер есть.

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

qemu всё схавает.

Эмулятор в данном случае добавляет ощущение игрушечности процесса и требует дополнительной работы по установке и настройке. По книгам Столярова ты пишешь асмкод, которые нативно работает на твоей основной машине.

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

лампово-пимпочной, настоящей

Блин, на самом деле я на таком бы поработал)

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

i386 по учебнику Столярова это тоже ненужная игрушечность, как его вообще запускать? multilib сначала ставить?

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

Если обучать реальному использованию ассемблера на Linux, то тут нужно сначала про архитектуру современного ПК рассказывать, как работают процессоры, как под них оптимизировать, итд. Расширенные наборы команд изучать.

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

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

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

лучше сразу учить на wasm
черты машинного языка у него есть

Да, например отсутствие полноценного доступа к памяти, локальные переменные, стекфреймы.

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

В ветке речь идёт о возможности программировать на ARM-ассемблере, используя смартфон под управлением ОС Android. Очевидно, что для этого нужны ассемблер и линкер.

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

Эмулятор в данном случае добавляет ощущение игрушечности процесса

CONFIG_IA32_EMULATION, используемый для эмуляции 32-разрядных системных вызовов и ABI, игрушечности не добавляет?

https://github.com/torvalds/linux/blob/master/arch/x86/Kconfig#L3144

vM ★★
()

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

си - редок и слишком нишевый. паскаль прочно забыт. а если есть те, кто пишет на asm i386(и даже всех последующих) - покажите на него пальцем.

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

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

В третьем томе разбирается Си++ и FLTK. Да и в приниципе имею те знания, которые даёт трёхтомник освоить иные технологии будет гораздо проще, чем с нуля.

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

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

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

Эмулятор в данном случае добавляет ощущение игрушечности процесса

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

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

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

На самом деле не совсем так, первые три книги и половина четвёртой написаны для детей лет 11, а остальные 4 книги написаны уже когда Роулинг бабки ударили в голову и она мутила уже вселенную, а не сборник сказочек для детишек. Относительная серьёзность повествования падает на голову неожиданно и быстро, а дальше тебе рассказывают больше про становление местного третьего рейха, а не про приключения мальчика со шрамом. А фильмы, первые два сняты +- нормально, третий хорошо, четвёртый, там книга не поместилась в 2 часа, а всё остальное снимал Девид Йейтс за бюджет в виде пачки сухариков и банки пива и качество соответствующее.

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

sbu_shpigun
()
Последнее исправление: sbu_shpigun (всего исправлений: 1)
Ответ на: комментарий от Zeev

А в x64 встроены два 32-разрядных подрежима и минимум три 16-разрядных подрежима, частично эмулирующих работу ЭВМ прошлых лет.

Зачем бояться 16-разрядных ассемблеров для FreeDOS, Турбопаскалей и других 16-разрядных страшилок, которыми сам Андрей Викторович пугает в предисловиях к своей работе?

vM ★★
()
Последнее исправление: vM (всего исправлений: 1)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)