LINUX.ORG.RU

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

 , ,


19

5

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

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

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

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

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

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

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

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

★★★

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

Ответ на: комментарий от SjZ

Зачем кого-то учить программировать на ЭТОМ?

Затем, что Паскаль приучает к культуре структурного программирования. В современных реализациях (года так с 91-го), к тому же есть нормальная модульность. Которой, замечу, в 2015 году нет ни в чистом Си, ни в плюсах. Заставлять новичков копаться с инклудами, стражами компиляции и прочими костылями, которые в реализации весьма коварны и зачастую не прощают элементарных ошибок - негуманно.

Вот на следующем шаге можно и за Си браться.

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

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

А вот и специалисты по высасыванию трудностей из пустого места.

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

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

Любое исполнение алгоритмически полного кода, приехавшего непойми откуда, есть дыра в безопасности, точка, от слова всё. Аминь. Повторяться не буду, см. сюда: http://www.stolyarov.info/books/asm_unix#comment-598, тред листать до конца.

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

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

Наверное, имелось в виду вот это:

Я этого не делаю вполне намеренно. Более того, я не исключаю варианта, что мне придётся перейти от публикации PDF'ов к публикации какого-нибудь djvu, который вообще не содержит текста, а только графические картинки.

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

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

А почему допустим тупо поставить Qt SDK это не программирование под Linux?

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

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

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

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

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

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

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

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

Затем, что Паскаль приучает к культуре структурного программирования.

Приучает учитель, а не ЯП.

Которой, замечу, в 2015 году нет ни в чистом Си, ни в плюсах.

Так может уж тогда D, он хоть немного поживее этого вашего Паскаля.

foror ★★★★★
()
Ответ на: Про указатели от Croco

понимание указателей это понимание отличия между «именем» и «значением»

а вообщет если чел понимает массивы то он понимает указатели - и наоборот.

если у чела затруднения с указателями значит в чём то он не понимает индексы массива ведь указатель это индекс в памяти :)

qulinxao ★★☆
()

сайт и книжки

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

Про диплом в latex за 3 дня очень нужная тема, например. В своё время в этой ситуации обошёлся not so short introduction to latex2e, но меня не дрюкали за оформление по ГОСТу. Позже был другой диплом, там дрюкали, всё свелось гуглу, который привёл к одной статье в одном блоге - там был готовый код.

Господа, вот что я хочу сказать в целом. Замечено, что если в США/Европе принято поддерживать любое начинание (не нравится - похвалить хотя бы из вежливости), то в российской культуре (на пост-советском пространстве) нужно обязательно втоптать в грязь. Это очень обидно, особенно когда критикуют те, кто ничего такого не сделал

Писать книжки - это ТРУД, поэтому категорически НУЖНО. Хотя бы для тех, кто не преодолел ещё языковой барьер. Ну или не нашёл стимула его преодолеть. Может, хоть эта книжка послужит таким стимулом. Даже в этом будет ПОЛЬЗА.

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

Автор(ТС) молодец - и польза от него велика есть.

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

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

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

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

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

неубедительно.

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

попутал с марком шэни да.

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

4 слова вход уже да1т текст много качественее 95% обитателей.

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

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

Во-вторых, опять же все сайты, которые я рассматривал, изготовлены безответственными и безграмотными халтурщиками, которым плевать на безопасность посетителей их сайтов: при отключённом JavaScript эти сайты категорически отказываются работать, принуждая, таким образом, каждого посетителя включить пресловутый JS и тем самым скомпрометировать безопасность своего браузера (вот только не надо мне рассказывать про то, что JavaScript «безопасен», ладно?) Сам я за свою безопасность более-менее спокоен, но заставлять всех своих доноров регистрироваться на таких сайтах (а без этого там пожертвование не сделать) — увольте-с.

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

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

Пример с https был озвучен выше, так же автор упомянул про нежелание делиться номером телефона, но почему-то забыл, что для оформления сим-карты нужно отдавать паспорт в чужие руки. Безопасность? Что это такое?

Не надо выдавать своё личное мнение за безупречную истину (тон комментариев на сайте сподвигает считать так).

Deleted
()
Ответ на: про Free Pascal от Croco

Впрочем, у меня Паскаль используется в роли учебного пособия как переходной этап перед Си, причём исключительно по причине того, что Си можно изучать не раньше, чем в мозгу полностью уляжется концепция указателя (эта концепция кажется простой только тем, кто никогда не пробовл вбить её в голову ученику на частном уроке). Паскаль удовлетворяет трём важным свойствам: (1) в нём есть указатели, причём настоящие, без всякой сборки мусора и прочей попсы; (2) без этих указателей можно довольно долго и благополучно обходиться, изучая начала программирования и привыкая к самой концепции выполнения императивной программы, и (3) когда обучаемый созрел для применения указателей, он от них получает ясно видимый профит, то есть его не заставляют их изучать по принципу «надо значит надо», а предлагают ими воспользоваться, чтобы, например, не вводить явных ограничений на максимальное количество каких-нибудь обрабатываемых данных.

Всё правильно. Я сам в далёком 1994м начинал учить программирование с паскаля (ох и тяжело же было переходить с него на С, не говоря уже о С++). Паскаль прост, благодаря ему можно понять алгоритмические азы - процедуры, функции, рекурсия, работа с динамическими структурами, работа с памятью - он не засоряет обучающийся мозг сложным синтаксисом С и его неоднозначнастями (по крайней мере интуитивно понятный int в С имеет совсем неинтуитивно понятный размер (для этого есть int32_t и пр.))
Однако, наверное сразу стоит подавать и объектно-ориентированное программирование, ибо сменить процедурную парадигму на объектную в голове ох как не просто. IMXO по своим ощущениям учёбы в ВУЗе.

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

Хочется убивать

Сделай милость, начни с себя.

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

Если бы сорок лет назад не появилась хренотень под названием Си, мы бы сейчас не читали бесконечные новости про очередную уязвимость из-за переполнения буфера…

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

у нас семь слов всего словарный
у нас всего семь слов запас
семь слов всего запас словарный
у нас
© bu6lik

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

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

Ок, ясно, инженеры гугла криворукие обезьяны, а вы Д'артаньян?

Странные заключения о нужности языка, у которого нет аналогов от преподавателя free pascal.

перед заходом на JS-нутые сайты я делаю ssh -X bolvan@localhost и уже там запускаю браузер. Это вы называете «повышением юзабилити»?!

Аплодисменты в студии, вот она какая, безопасность! Если что, любое приложение, имеющее доступ к иксам может захватывать произвольные события -> потенциальный кейлоггер. Это вы называете «повышением безопасности»?! Ну и вся ФС перед потенциально небезопасным браузером, и ядро, в котором наверняка еще есть локальные уязвимости.

Но ублюдков-вебразработчиков, ...

Кхм-кхм...

Этот браузер, простите, раз в неделю в корку падает

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

подвергнуть смертной казни в особо продвинутой форме — например, путём утопления в бочке с дерьмом. Публичного.
Руки бы вам оторвать. Медленно, по кусочку. С прямой трансляцией по телевиденью.

А это уместно вообще для преподавателя? Я бы такому своих детей не доверил

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

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

в безопасности вы вообще ничего не понимаете. Как, впрочем, и большинство людей, в том числе и «профессиональных айтишников». Но я — понимаю

«Содомиты окрестъ, азъ же единъ Добрыня Никитичъ есмь». Пруфы будут? Патчи там к какому-нить openssl, браузеру, дистрибутиву?

Наконец, есть ещё и попросту сволочные авторы сайтов, всерьёз полагающие, что они вправе решать за пользователя, что пользователю делать, а что нет.

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

Самая вероятная проблема, которую сейчас может вызвать браузер - это только отслеживание, с этим действительно везде проблемы. Но при желании всё это исправляется несколькими десятками манипуляций с about:config.

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

В сях у переменных есть адреса?

Как это ни странно звучит, но есть & который и даёт адреса (причём не только переменных, но и объектов в С++)

void *ukazka;/*указатель*/
int i,j[10]={1,2,3,6,5,4,7,8,9,0},p;
ukazka=(void*)&i; /*указатель на переменную i*/
ukazka=(void*)&p; /*указатель на переменную p*/
ukazka=(void*)&(j[3]); /*указатель на 3й элемент массива j[3], т.е. "6"*/

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

сразу стоит подавать и объектно-ориентированное программирование

емнип, то в Object Pascal и C++ немного разные парадигмы ООП.

Или я путаю модели объектов в Turbo Pascal и Object Pascal/Delphi

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

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

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

емнип, то в Object Pascal и C++ немного разные парадигмы ООП

Конечно, но когда годик-полтора попишешь на паскале, потом ещё год на С перестроить мозги хоть на какие-то объекты очень сложно. ObjectPascal и C++ очень сильно отличаются, как небо и земля, но всё-таки обучение сразу двум методам программирования не зациклит мозг на одном процедурном - не надо будем ломать шаблон
К стати и сам язык С сильно отличается от Паскаля - С обучает аккуратности и не прощает очепяток вида "," вместо ";", тогда как паскаль сразу видит неполадки.

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

Возможно, мы учили асм86 параллельно с С(2 разных курса).

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

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

Правой кнопкой мыши на кнопке и «Перейти к слоту» - это всё же не совсем «вручную прописывать». Хотя в Delphi некоторые вещи действительно делались проще...

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

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

А ты не забыл, что учитель - это не только труд - это адский труд. Посмотри на д/сады и школы - этим учителям и воспитателям больше всего достаётся. Учить в ВУЗах тоже не сахар, хотя попадаются «гении», что приходят на лекцию и говорят читать от сих и до сих, а на экзамене/зачёте буду всех иметь.

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

Ты достал со своим Степановым. Это же обычная совковая недоматематика в виде шарад и ребусов.

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

ты по ссылке пройди

у него там вполне камерный курс для варваров.

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

ObjectPascal и C++ очень сильно отличаются, как небо и земля

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

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

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

ибо ща в учителях воспитателях во многом отбросы общества сконцентрированы :(

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

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

Вообще идея была сделать вот так в итоге https://libreoffice.readthedocs.org/ru/latest/, отсюда и реТекст и прочее. В плюсах: правка всем миром без вопросов (поскольку оно на гитхабе все лежит), можно делать версии документации на основе уже созданного (ну то есть сделать версию на основе LibreOffice 4.4, вместо 4.3, просто добавив что там нового привнесли в пакет), можно относительно легко получить HTML, ePub, PDF. Ну вот как-то так

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

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

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

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

grem ★★★★★
()
Ответ на: Про указатели от Croco

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

Может стоит сначала рассказывать про машины тьюринга и ассемблер&

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

чем любой из них к какому-нибудь функциональному языку

Функциональное программирование (тот же лисп) и ООП это две абсолютно разные вещи. И при изучении лиспа действительно рвётся шаблон в мозгу, хотя когда въедешь всё просто и логично оказывается. Это два разных инструмента для решения разных классов задач.

drfaust ★★★★★
()

Программирование для Линуха и вообще нужно начинать с Python по Лутцу

А потом JavaScript Фленагана

/thread

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

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

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

ибо ща в учителях воспитателях во многом отбросы общества сконцентрированы


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

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

Переменная, содержащая адрес переменной.

Да понятное дело, но проблема в чём — это заклинание можно повторить хоть пять раз,

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

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