LINUX.ORG.RU

Книга для начинающих программистов, ориентированная на Linux

 , ,


19

5

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

Автор проекта уже известен публике по своим книгам Программирование на языке ассемблера NASM для ОС Unix, Сверстай диплом красиво: LaTeX за три дня и другими. Электронные версии всех своих книг автор сразу после выхода бумажного издания выкладывает на сайт, считая это принципиальной позицией.

Книга, задуманная Столяровым в этот раз, должна стать руководством для начинающих, ориентированным на *nix-системы (с использованием командной строки в качестве основополагающего принципа при обучении) и покрывающим при этом предмет от нулевого уровня (школьной информатики) до ООП и парадигм программирования; структура книги приблизительно соответствует последовательности программистских курсов на факультете ВМК МГУ, но отличается от программы ВМК наличием общей платформы (*nix), полным исключением заведомо мёртвых инструментов вроде всё ещё применяющихся на ВМК Турбо-Паскаля и ассемблера MASM для MSDOS, а также существенно иначе расставленными акцентами. Примерный план книги представлен здесь, а с оглавлением неоконченной рукописи, уже включающей три части из предполагающихся семи или восьми — здесь.

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

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

Даже без дополнительных глав ожидаемый объём книги составляет порядка 1000 страниц; автор планирует уложиться в 500 рабочих часов, для выделения которых необходимо на некоторое время отказаться от подработок. Кроме того, издание книги в бумаге потребует серьёзных расходов, а сотрудничество с издателями на их условиях означало бы невозможность распространения (по крайней мере, открытого) её электронной версии. Автор предпочёл объявить о сборе средств.

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

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

★★★

Проверено: maxcom ()
Последнее исправление: CYB3R (всего исправлений: 2)
Ответ на: комментарий от Twissel

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

ну или наоборот *(a+i)

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

qulinxao ★★☆
()

Часть по паскалю не нужна ибо на сколько мне известно, уже в этот году всего курса будет python

anonymous
()

Помню выбросы автора, что всем хватит 1 ghz 512mb ram. А остальное для мейнфреймов. Поддержку нормальных вещей из 11/14х стандартов в cpp часть добавлять будете? move семантику/потоки/variadic templates?

anonymous
()
Ответ на: комментарий от drfaust

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

anonymous
()
Ответ на: комментарий от FIL

Дык, щас же по пайтону учаться.

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

anonymous
()
Ответ на: комментарий от Croco

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

andy_cher
()
Ответ на: Про краудфандинговые площадки от Croco

Я не нашёл не только «решения», но и вообще сколько-нибудь приемлемого варианта среди этих так называемых площадок.

А на Sbor-Nik вы смотрели? Он вроде как более «для людей» сделан.

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

А на Sbor-Nik вы смотрели?

Кстати нет, не смотрел. Что-то он сейчас у меня не открылся, но я обязательно потом посмотрю. Спасибо.

Croco ★★★
() автор топика

буль-буль-буль

ados ★★★★★
()
Ответ на: УКАЗАТЕЛИ В C/C++ СТРАШНЫ от Xintrea

В C и C++ с указателями вообще засада. Засада в синтаксисе.

+1

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

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

Для изучения C вполне достаточно материалов по С,..

Речь вроде шла об обучении программированию, а не C. Это во-первых. И во-вторых: более половины т. н. «материалов по C» рассказывают о не о том, как охотиться на медведя, а о том, как при охоте на медведя не отстрелить себе яйца.

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

Наверно при настоящей охоте на медведя отстрелить себе яйца гораздо сложнее. Если, конечно, этого не желать.

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

Ну а указатели — как ни крути, один из самых высоких барьеров при входе в эту дисциплину. Думаете, почему их в школе нет? Кто-то, может, пожалел несчастных школьников? Да чёрта с два, никто никого не жалел, просто среди учителей информатики нет практически никого, кто мог бы это не то что объяснить, а хотя бы сам для себя понять.

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

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

еще, прежде чем писать про bash я бы написал про vim и emacs (страниц на 5 для каждого), чтобы у будущего программиста был выбор и естественно сделал бы сноски на более полное изложение темы.

Дык, это, что мешает-то? Пиши!

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

я не так выразился, я бы почитал такую книгу

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

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

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

Короче, школа вообще не нужна.

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

На роль российского Кнута рекомендую рассмотреть Александра Шеня с книгой

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

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

Вы может не знаете, но pascal/c идёт в рамках курса Алгоритмы и Алгоритмические языки.

И на чем же практику давать? Псевдо-языки (как у Кнута) не дадут то качество запоминания как реальная практика.
По хорошему на данном курсе каждый студент должен сам выбирать на чём «пузырьки» писать, но многие приходят в ВУЗ не зная ни одного языка программирования(сейчас наверняка ситуация изменилась, у нас в некоторых школах С по информатике дают, другие школы упёрлись в VB), да и зверинец языков осложняет жизнь преподам.

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

ну под simH есть вполне годнные mmix среды с тем же линуксом. т.е можно и mmix-асме реально учить - тот же Рcode Тока в 2015 а не в лохматых 70ых.

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

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

у нас в некоторых школах С по информатике дают,

Конечно, дают, ага. Я просто занимаюсь репетиторством, к ЕГЭ по информатике готовлю. Так вот есть даже школы, где «дают» C++, ага. Дальше cin/cout там, естественно, дело не заходит, зато мне тут попался 11-классник, у которого в школе пятёрки по этому «C++», только он при этом не понимает, что if — это не цикл. И что такое цикл, естественно, тоже не понимает. И что такое «функция», не понимает. Зато пятёрки по C++.

Вот C в школе «дают» тоже примерно так же. Либо это делает школьный учитель, который C не знает (откуда бы ему), такие знак «&» в scanf'е объясняют сакраментальной фразой «так надо, дети, так надо» (а ещё рассказывает, что в конце программы надо обязательно поставить getchar(), ну потому что тоже так надо). Либо это делает бывший программист, который вдобавок, естественно, вообще не понимает, что такое «процесс обучения» (потому что если бы понимал, то Си бы школьникам втюхать не пытался). Такие обычно просто тупо не замечают, что их «материал» пролетает школьникам мимо ушей, причём в большинстве случаев во всём классе находится один-два ученика, у которых папа программист и папе не лень с чадом позаниматься, а остальные не понимают вообще ничего, что там происходит.

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

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

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

Там не паскаль, а очень узкое его подмножество, практически не требующее изучения. Слово var не встречается, процедуры не задействованы. Циклы, if-ы, массивы, да write. В этом смысле абсолютно по барабану, какой из синтаксисов использовать для псевдокода.

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

если программирование и давать в школе

то ровно так же как деление умножение и прочую арифметику.

прошивать базовые алгоритмы(т.е вот это вот самое последовательное,выбор,цикл(итерация)-рекурсия(индукция к меньшей)) сразу в начальной школе - учитываю педагогическую машину Каменского это случиться через лет 30-40 когда 2-3 поколения смениться и программируемые устройства будут как телевизоры доступны(как потребительские устройства) с детсадовского возраста каждому.

ведь прошивают ща поголовно алгоритмы деления лесенкой и умножение в столбик.

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

вообще не понимает, что такое «процесс обучения» (потому что если бы понимал, то Си бы школьникам втюхать не пытался

Посмотри, по какой программе учатся студенты на соседнем мехмате. Си с первого курса, и ничего, даже девочки справляются. Просто приди к ним на пару и посмотри, как они кодят. Я понимаю, конечно, что ВМК расположено на пол-пути к цирку, но с паскалем это какой-то просто фарс.

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

А ничего что для ОБУЧЕНИЯ программированию язык желательно выбирать без вот таких вот костылей?

Для обучения достаточно будет просто не топтаться по граблям.

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

Ты забыл добавить, что это твоё личное, плохо обоснованное мнение.

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

Для обучения достаточно будет просто не топтаться по граблям.

Если грабли у языка - by design, но не мешают в продакшене - не топтаться по ним затруднительно

Ты забыл добавить, что это твоё личное, плохо обоснованное мнение.

Которое поддерживает много народа. Примерно половина преподавателей, которых я знаю в ВУЗе, где работаю. Причем, что характерно - и молодые(от старых этого вполне можно ожидать by default - всё новое они могут и не переваривать).

К примеру, один мой хороший знакомый считает, что Python почти подходит на роль языка для обучения. Ключевое слово - почти. А Pascal он не таковым не считает только по одной причине - то что Free Pascal и Lazarus у нас старики-преподы не осиляют, а преподавать Turbo Pascal в 2015 - это немного маразм.

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

Бесполезный такой бесполезный.

Ты пруфы на хедхантер давай

Ты сам подставился. Страдай и завидуй

С зарплатой от 100 тыр нашлось аж целых 16 вакансий. На всю Москву. Успех так успех! :D

http://hh.ru/search/vacancy?text=delphi&area=1&salary=100000&curr...

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

не топтаться по ним затруднительно

Плохому танцору...

К примеру, один мой хороший знакомый считает, что Python почти подходит на роль языка для обучения.

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

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

Угадай почему? Не кажется ли теье , что просто даже в школе давно пора разделить computer science и курс машинистки. Таким образом программирование в школах либо есть либо нет, вне отрывочные знания. Готовить людей к ЕГЭ, не интересно?, готовь людей к РОИ. Если хоть кто-нибудь до него дойдёт, вот тогда и узнаем твой скилл преподавателя.

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

Ребе, я С++ выучил в старших классах. Что я делал не так?

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

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

Ребе, я С++ выучил в старших классах. Что я делал не так?

Считал, что действительно выучил его // К.О.

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

От себя добавлю, что с программированием — не единственная беда в школе. И с физикой, и с основами матана, да и с тригонометрией — те ещё проблемы. Понимают два-три человека, и ладно.

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

Открой для себя занимательные сайты , как informatics.mccme.ru. acm.timus.ru, codeforces.ru и другие сайты с задачами на Алгоритмы и структуры данных. Хочешь свое идешь на ejudge.ru добавляешь свои компиляторы заливаешь свои задачи. На coodeforces можешь сдавать свои задачи хоть на «борщеязыках» . Препод даёт набор задач. Студент сдает их до ок. А потом объясняет решения преподу. Примерно так работает на первом потоке факультета тс(только с сями). Но на других потоках, где тс и преподает сборище неосиляторов в эту схему.

anonymous
()
Ответ на: комментарий от Manhunt

Олололошечки, у тебя-то и 60к не будет.

anonymous
()
Ответ на: комментарий от Croco

но многие приходят в ВУЗ не зная ни одного языка программирования(сейчас наверняка ситуация изменилась, у нас в некоторых школах С по информатике дают, другие школы упёрлись в VB),

Значит ситуёвина на том же уровне как и в моих 90х :(

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

Может быть вы и правы, хотя наврядли.

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

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

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

Ребе, я С++ выучил в старших классах. Что я делал не так?
Что я делал не так?

Просрал беззаботное детство.

anonymous
()

Кстати, когда сдавал [RIP] Пильщикову В.В. экзамен по «Ассемблеру», на апелляции с ним пришлось спорить - является ли TASM двухпроходным, или нет. Пильщиков утверждал, что TASM - однопроходный, то есть что TASM просматривает (сканирует) исходный код один раз, не делая предварительный проход для составления таблицы символов и т.п.

Ещё, когда сдавали экзамен в форме написания коротких программ (у нас предполагалось использование инструкций 286-го процессора), оказалось что 55/60-летняя бабушка по практикуму не знает о команде XLAT ... за эту оплошность мне надбавили баллов в итог.

Но «пятерку» я тогда по экзамену так и не получил.

P.S. Шикин раньше хорошо вёл лекции, кто-то ему на практикуме по «машинной графике» летающую корову нарисовал, а потом - и летающий кораблик в режиме 320x200@8bit (или 640x480@8bit). Требовалось нарисовать real-time анимацию ряда невыпуклых тел (примерно >= 15 fps). Для этого хватало и Borland Pascal + 640x350@4bits + EGAVGA.bgi, но энтузиастам обычно хотелось сделать что-то выдающееся на асме (MASM, TASM).

anonymous
()

Для начинающих и так много всего. Полезна была бы книга для программистов среднего уровня.

Deleted
()
Ответ на: комментарий от anonymous

А кем вы сейчас работаете?

Прикладное (SQL/XML/apps), и немного системное программирование. Фриланс и наемный работник.

Опыт по asm'у пригодился больше для занятий Just-for-fun (я изучал его самостоятельно - zeus asm для Zilog Z-80 и TASM для I80286). До самостоятельного написания аналогов Norton/Volcov Commander я не дошёл. И в embedded не пошёл, хотя именно там бывает нужна низкоуровневая оптимизация, real-time и понимание машинных инструкций для разбора чужого inline-кода в ядре Linux. Например, я пару раз использовал свой опыт низкоуровневого программирования, когда писал обмен по RS232 с устройством для i586/Debian. В остальном - мне чаще попадались задачи, где нужен C/Python/Delphi/SQL. Своего hardware (и соответственно развитой отрасли низкоуровневого программирования с соответствующей методологией разработки, подразумевающей некоторую хорошо понимаемую терминологию, и отчасти - философию) у России практически нет. Здесь в треде это упоминается под видом «Кнута в пяти томах» и т.п. Кнута я читал в молодости и даже решал задачи из него (2,3 том). Но по своему и чужому опыту могу сказать что стажировка на олимпиадных задачах (например см.Артём Ворожцов из МФТИ, и С.М.Окулов из КГПИ/нынеш.ВятГГУ) гораздо эффективнее.

anonymous
()
Ответ на: комментарий от Deleted

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

Deleted
()
Ответ на: комментарий от debugger

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

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

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