LINUX.ORG.RU

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

 , , ,

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

4

5

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

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

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

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

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

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

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

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

★★★★★

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

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

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

поплачка для нечётных длин

прежде чем делать последнее мод ( на 1(0)+ ) нужно сохранить тот остаток и если он кратен

в питонячней нотации:

a=n%..... %....
d,o=divmod(a,1(0)+) # т.е для b=1 добавляется div и сравнение
return o==0 and d<base

Ж)

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

длина идентификаторов - имена сущьностей это от того «мы покупаем али продаём?»

в математике приходится делать постоянно трансформации крокодилов поэтому чёрточки идеальные имена

словоЖеСодержащееДокументациюНаСебя оно очень полезно для экономии на квалификации сопровожденцев

зыЖ в сырцах golang - очень выверенный подход - если имя сверхлокально (ну там 2 -3 строки то однобукв) и увеличением использования области и имя всё более уникально_информативно

ну для глобальных там есть «очевидные» сокращения(привычные авторам) всёж

в целом именам достаточно быть глобально уникальногрепаемые в ну и желательно благозвучными - учитывая современые редакторы легко прикручивается тултип с докой - имхо из этого длиныеИменаАляЖаба это нездоровый бюрократический выверт обусловленный инерцией внедрения документирующих технологий уже на тот момент известных но ещё не общепринятых на страте топ менеджерья

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

всёж таки емсквадрат али уравнения Максвелла намеренно лаконичны ибо так проще помнить

так и с именами

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

upd: Notation as a Tool of Thought" 1979 Turing Award lecture Kenneth E. Iverson

http://rkka21.ru/docs/turing-award/ki1979r.pdf

там реально очень точно почему длинное имя это эрзац

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

Мне лень в это вникать. Скажу просто, что синтаксис паскаля выглядит максимально уродливо. Но это не твоя вина.

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

Вкусовщина же. Можешь попросить нейронку переписать один-в-один на C, наверное даже получится. В целом я тут только и делаю что дёргаю функции SDL, так что есть надежда что она не сильно испортит код и он скомпилируется и запустится.

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

Потому что столяров так сказал, или есть какая-то внятная и обоснованная причина?

Ну например, в Qt прямо рекомендуется то же самое. В программе всё в Latin1, весь юникод выносится в файлы .ts. Да, это не догма, если мультиязычности не предполагается, можно оборачивать те же русские тексты во fromUtf8(). Только некоторые не оборачивают, а потом удивляются, что у них программа в одной ОС кажет нормальный текст, а в другой кракозябры. И обёртку легко забыть, если в ОС разработчика всё нормально. Поэтому выносить не-латиницу в отдельные файлы всё же надёжнее.

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

В программе всё в Latin1, весь юникод выносится в файлы .ts.

Нет, так делать точно не надо. ASCII и всё. latin1 откроется кракозябрами в less.

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

Скажу просто, что синтаксис паскаля выглядит максимально уродливо.

Как уже выше написали – вкусовщина. И имхо, куда уродливее выглядит описание функций в си-подобных, от которого большинство современных языков (Rust, Go, JavaScript) отказалось.

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

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

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

Если тебе синтаксис паскаля - вкусовщина, то у тебя что-то не так со вкусом.

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

Вы все не правы, это задание (про палиндром) исключительно для ознакомления с div и mod, решать его оптимально или с возможностью расширения, или для чисел в любой системе счисления смысла нет. Начинающий все равно не справиться.

Так что решаете в лоб, разбирая число на цифры d1, d2, d3 и d4 и сравнивая if(d1=d4 and d2=d3).

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

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

Можно переключаться между UTF-8 и однобайтовыми символами ключом командной строки вместо локали. И кстати по дефолту можно делать автодетект. Валидный UTF-8 крайне редко может совпасть с валидной текстовой строкой в 8-битной кодировке из-за специфической структуры.

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

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

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

это задание (про палиндром) исключительно для ознакомления с div и mod

qulinxao3 с помощью двух mod и решил.

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

Можно. Но ты вкурсе, что прямо сейчас предложенный тобой подход уже нарушает заповеди твоего шизогуру? Он же против локалей вообще.

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

Можно. Но ты вкурсе, что прямо сейчас предложенный тобой подход уже нарушает заповеди твоего шизогуру? Он же против локалей вообще.

Именно он это и предложил. Посмотри верх гостевой или http://www.rebuildworld.net/taboo/unicode.html

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

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

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

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

Разве @Xenius во всём согласен с автором обсуждаемых книг?

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

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

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

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

[upd]: тут вопрос как часто меняется контекст - если часто аргументы практичней, если редко то глобальность(более того эт же не глобальность хоста - а скорее сессии терминала) - ну и как обычно какого размера серая зона об которую и ломают копья собеседники

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

Именно он это и предложил.

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

Whatever choice you pick, be sure not to get affected by the so-called ‘locale settings’, as locales are prohibited on their own.

Такие вот дела.

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

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

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

(речь про однобайтные )

которым мало кто из общеупотребимого софта пользуется - вопрос наибольшего общего

как результат если пользователи в одной «кодировкосфере» они ваще не видят проблемы

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