LINUX.ORG.RU

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

 , ,


19

5

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

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

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

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

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

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

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

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

★★★

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

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

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

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

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

mul4 ★★★★★
()

Прям аппликатор Кузнецова напомнило

К чему то надо было прижимать иголки чтоб вылечить СПИД

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

«всё так.

кроме: дворак уже бесмыслен - если только под себя и таких же спецов будет заточен(переточен) инструментарий+доки_к.

„кверти навсегда“

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

что императивное программирование и GC — это вещи взаимоисключающие.

это наброс?

берём обычный комп(с осью и файловой системой скажем Unix :) )

файловая система вашей императивной программе предоставляет сервис файлов и их «мусоро-сборку» при последней unlink.

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

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

Гм, ну я даже не знаю. У меня в ответ сразу два вопроса:

1) с каких пор файловая система стала свойством языка программирования (и какого именно)

2) с каких пор reference counting стал сборкой мусора.

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

если посмотреть/почитать интервью Боурна да и Томсона там описан генезис Unix - по сути файловая система была первое что Томсон реализовал(ещё на pdp11-асме) -

вот и ответ на q1 a1: файловая система в Си вынесена в библиотеку.

a2: дык файловая система - и менеджит «медленную память» inode и есть

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

Я что-то не наблюдаю ответа ни на первый вопрос, ни на второй. По первому «ответу», если такой логике следовать, то любая задача, решенная на языке программирования, становится его особенностью; к счастью, на самом деле сие глубочайшим образом не так. Второй вообще иррелевантен — погугли на досуге «garbage collecting algorithms» и осознай, что счётчики ссылок в качестве такового не канают принципиально. С таким же успехом можно в СУБД использовать линейный поиск и сортировку пузырьком.

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

императивное программирование и GC — это вещи взаимоисключающие

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

2. в отличии от общепринятого на момент создания С -подхода[ что язык определяет полный интерфейс к машине и в результате все сервисы предоставляемые пользователю(программисту прикладной задачи) были либо прямыми отображениями возможностей машины(т.е в наличии acm-команды(микрокод или железно)делающее буквально это) либо реализованное рантаймом реализации языка.] в Си учтено что окружение(Unix) предоставляет сервис учёта файлов(последовательностей)

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

и в результате управление жизнью обьектов «бесплатно» решается сервисом операционого окружения

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

вот и задание вашему какому нить студиозу- реализовать функциональный язык который будет компилироваться в СиСырец

Вообще-то я когда-то сам был студиозом (а потом ещё постградом) и реализовал InteLib. Правда, целевым языком там не C, а таки C++, но не суть. Самое интересное, что там даже — таки да — reference counting вместо сборки мусора, ибо полноценная сборка мусора лишила бы затею последних остатков смысла.

Это никак не отменяет моего базового утверждения о том, что сборка мусора не может встраиваться в императивный язык его частью; если это делается (Java, C#, ...) — на выходе получается не язык, а негодный к применению бастард.

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

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

В догонку...

в Си учтено что окружение(Unix) предоставляет сервис учёта файлов(последовательностей)

Что-с? В Си?!

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

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

Croco ★★★
() автор топика
Ответ на: В догонку... от Croco

ну вот возмите просто предисловие от первого издания K&R:

Preface

2 абзац:

C was originally designed for and implemented on the UNIX operating system ...

Chapter 0: Introduction

3 абзац: тут сами

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

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

C was originally designed for and implemented on the UNIX operating system ...

И чего? Спасибо, кэп. Только каким образом из этого следует, что в Си (блин, в СИ!!!!) появились файлы?! Я вон тут недавно в очередной раз в своей любимой прошивке ковырялся, поищи там файлы, на микроконтроллере-то.

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

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

Какая тут может быть коммуникация, к чёртовой бабушке. У меня ощущение, что я «коммуницирую» с генератором бессмысленного текста.

Если у Степанова такие фанаты, то это меня только укрепляет во мнении относительно его самого.

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

Только каким образом из этого следует, что в Си (блин, в СИ!!!!) появились файлы?

приписывать оппоненту высказывания

.

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

Ага, угу

в Си учтено что окружение(Unix) предоставляет сервис учёта файлов(последовательностей)

я не я, лошадь не моя, всё такое, ага.

Всё, надоело. Объявляю мораторий на ответы на комментарии qulinxao.

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