LINUX.ORG.RU

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

 , ,


24

11

На официальном сайте А. В. Столярова объявлено о выходе первого тома книги «Программирование: введение в профессию». Первый том, озаглавленный «Азы программирования», включает две части: «Введение» и «Язык Паскаль и начала программирования». Обе части, как и вся книга в целом, ориентированы на использование ОС Unix (в основном Linux); в предисловии автор, обращаясь к «коллегам-преподавателям», заявляет, что книга вряд ли будет им полезна, если командная строка ОС Unix не станет их основным инструментом для повседневной работы с компьютером.

Электронная версия первого тома (PDF) доступна на сайте в открытом доступе.

Книга «Программирование: введение в профессию» примечательна тем, что средства на её написание и издание были собраны через краудфандинговую кампанию. По словам автора, это был единственный вариант, позволяющий написать книгу и предоставить открытый доступ к её электронной версии. Приём пожертвований на сайте А. В. Столярова продолжается, поскольку средств для издания последующих томов к настоящему моменту недостаточно.

Как сообщалось ранее в новостной ленте сайта, второй том книги, который выйдет под заголовком «Низкоуровневое программирование», уже практически готов к печати. В него войдут часть о программировании на языке ассемблера NASM для ОС Unix, а также часть, посвящённая языку Си. Пока неясно, войдёт ли в этот же том часть, рассказывающая о принципах построения операционных систем и о возможностях, доступных на уровне системных вызовов ОС Unix, или же эта часть будет оформлена как отдельный том. Сроки издания второго тома также пока неизвестны, поскольку зависят от дальнейшего хода краудфандинговой кампании.

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

★★★

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

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

Равно как и для управления виртуальной, если мы в 2016 году находимся. Нужность виртуализации на серверах Вы надеюсь не отрицаете? )))

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

А после экзамена они точно не думают «господи, зачем нас этой консольщиной грузили?»

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

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

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

Нужность виртуализации на серверах

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

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

Под виндой сия цель недостижима.

Так ведь под современным линуксом то же самое, консоль простому пользователю уже не нужна, если его не на Pentium 2 ставить. Тогда надо к DOS и TurboPascal возвращаться. Кстати, когда я изучал TurboPascal в школе, тоже никаких исполняемых файлов не видел и компиляторов, тем более компоновщик. Уже там была IDE во все поля, хотя на компьютерах стоял только DOS и никакой графики вообще не использовали.

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

разве в винде нет posix

как бы есть

Qt

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

gcc

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

GTK

А вот он уже в Винде так и остался достаточно чужеродным, по крайней мере, насколько я помню…

Python

С ним всё достаточно неплохо, ну так ни в одном питоновском учебнике автор на установке Linux/Unix и не настаивает.

emacs, vim

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

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

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

Есть проблемы, подтверждаю. magit для Emacs в Windows работает очень медленно.

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

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

В случае проблем с ядром в одной из виртуалок пострадает только она, а не все сразу, как в случае с OpenVZ. Хостовую систему при этом можно сделать весьма надежной, убрав все лишнее и оставив только гипервизор. Эмулировать реальное железо давно не обязательно при этом, есть же паравиртуализация.

По-моему, это достаточно явные преимущества.

Если говорить о десктопе студента, тут виртуализация тоже весьма полезна из-за корявости мироздания и системы образования. При наличии windows 10 может легко потребоваться XP например, для запуска древнего софта, все еще использующегося в образовательном процессе. По крайней мере у нас такие проблемы часто возникают. Или при наличии Linux потребуется Windows софт.

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

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

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

Лазарь — надстройка над FreePascal предназначенная для написания GUI приложений дельфиобразным способом. Если GUI не нужно, FreePascal ничем надстраивать не требуется.

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

Лазарь — надстройка над FreePascal предназначенная для написания GUI приложений дельфиобразным способом. Если GUI не нужно, FreePascal ничем надстраивать не требуется.

И в чем неудобство винды тут тогда? Компилятор такой же, редакторов ворох, IDE для паскаля одинаковая, даже при задаче создания графических приложений на паскале разницы нет.

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

Кстати, когда я изучал TurboPascal в школе, тоже никаких исполняемых файлов не видел

Так их и не было там, как правило — в этом был один из главных профитов запуска Turbo Pascal с дискеты. Все держалось в памяти.

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

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

Кстати у нас в школе был учитель, который принципиально не пользовался мышкой, самое интересное, что он сидел в венде как в основной системе. У него было пол класса под linux пол класса под windows, он хорошо обучал и всегда угощал кофем, если к нему зайти на переменке. Эх, жаль что попёрли его за то что баб в нерабочее время себе в кабенет водил...

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

ActivePerl включает в себя perl package manager - ставте то, что вам реально нужно. В линихе ситуация аналогична, или вы модулями перл через apt рулите?

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

Как вы можете сравнивать, вы же не знаете cmd. Про какой unix shell вы говорите? Про sh ? Скорее всего вы его то-же не знаете.

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

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

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

смотри не порежь царственный анус при шлифовке, еще нежнее

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

Потому что когда система ставится в виртуалке, создаётся психологическое ощущение, что это не система, а непойми-что-неизвестно-зачем. ОС предназначена, чтобы управлять физической машиной. Я не против виртуалок для тех, кто давно и прочно умеет работать с тем же Linux'ом и уже никоим образом не сомневается, что это настоящая операционка, а не искусственная.

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

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

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

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

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

Ну с точки зрения книги, если человек хотел написать книгу где рассматривается программирование в окружении linux, то глупо его в этом упрекать. Как бы как цель ставил то и сделал. Может быть проблема вовсе не в венде а толерантности к виндузятникам да и вообще к людям?

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

кстати, создатели plan9 считают заблуждением утверждение, что использование мыши снижает производительность: http://plan9.bell-labs.com/wiki/plan9/mouse_vs._keyboard/index.html. Всё с точностью до наоборот.

Ну vi и vim далеко не идеальны (лично я надеюсь на neovim). Но давать из-за этого предпочтение мышки как-то сомнительно. По личному опыту, ей удобно пользоваться только при копипасте, рисовании или в браузере...

По ссылке данные протухли тут надо «перемерить» результаты. Но согласитесь, что использовать мышку без хоткеев в программе, в который вы работаете каждый день это не очень эффективно. Ребята из blender это подтвердят. Собственно вывод тот-же главное без фанатизма...

ASM ★★
()

Вероятность того, что Вася проиграет обе партии, составляет 3/8

Страница 165. Андрей Викторович, а разве не 7/8, я не понял откуда цифра :-)

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

Аналогичным перемножением же

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

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

Как вы можете сравнивать, вы же не знаете cmd. Про какой unix shell вы говорите? Про sh ? Скорее всего вы его то-же не знаете.

Мне без малого 45, я ещё немного CP/M помню и RT-11. К Linux пришёл довольно поздно, через дуал-бут и разработку кроссплатформенных приложений на C++ Qt. Так что возможность почуствовать разницу у меня была.

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

Я не о модулях/библиотеках, попытки заменить существующие модульные подсистемы различных сред программирования пакетами ОСи таки вызывают некоторое недоумение и сомнения во вменяемости мейнтейнеров дистрибутива.

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

Про какой unix shell вы говорите? Про sh ? Скорее всего вы его то-же не знаете.

Про bash и fish в основном (zsh настраивать лень). Хотя в своё время как-то пришлось с ksh иметь дело. Нет не гуру, отнюдь.

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

Так ведь под современным линуксом то же самое, консоль простому пользователю уже не нужна,

Вы за что так не любите простого пользователя, что хотите его заставить файлы мышкой копировать? :-)

Управлять машиной с помощью CLI просто удобнее и быстрее, если знать как. Но, в общем, по-моему логично из обучаемого заодно сделать «продвинутого пользователя», причём чуть раньше, чем из него получится программист.

Тогда надо к DOS и TurboPascal возвращаться.

Можно подумать, под DOS'ом хоть что-то полезное можно сделать в современных условиях. Я это к тому, что жить под DOS'ом ученик не будет, так что «вернуть» его туда не удастся.

Уже там была IDE во все поля,

Ну я как бы в курсе, я на этом Turbo, а потом Borland Pascal'е в своё время деньги зарабатывал, и по тем временам неплохие, особенно для первокурсника. Ну и что? Я тогда в IDE сидел, потому что не знал, что бывает как-то иначе. Когда узнал, понял, что IDE — это неудобно и контрпродуктивно.

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

Страница 165. Андрей Викторович, а разве не 7/8, я не понял откуда цифра :-)

Конечно не 7/8. Там 1/8 — вероятность того, что он обе выиграет, так что 7/8 — это будет вероятность того, что он проиграет ХОТЯ БЫ ОДНУ, а не обе. А вероятность проигрыша обеих партий — это произведение вероятностей проигрыша каждой в отдельности, т.е. (1/2) * (3/4) = (3/8)

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

Ну да, ну да. Особенно удобно бродить в консоле по незнакомой/развесистой файловой системе или копировать группу файлов между глубоко зарытыми папками, тут ведь главное не забыть полный путь до папки назначения, а то такой облом будет. А портянки make-файлов конечно же удобнее проектов IDE, я уже не говорю про нормальную навигацию по коду.

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

С ним в комплекте идет командный компилятор, а с BP даже не один, в т.ч. способный собрать то, что в среде не собирается из-за нехватки памяти :) Если вы их не видели, не значит, что их нет.

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

пробовал я ваш plan9 (inferno, если быть точнее). Так вот, использование мыши и нормальных шорткатов в терминале снижает производительность в разы.

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

Да, и еще по поводу этого материала: я плохо понимаю,

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

может быть связана с количеством информации,

которое описывает состояние объекта?

Объясните, если нетрудно.

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

Особенно удобно бродить в консоле по незнакомой/развесистой файловой системе

Вообще-то, удобно. ls -R или find | less позволяют видеть всю информацию сразу, а не как в этих ваших двухпанельниках. Особенной развесистости файловой системы, кстати, не наблюдается, если приучить себя структурировать свою информацию. Весьма полезный навык для студента.

или копировать группу файлов между глубоко зарытыми папками,

Внезапно, в шелле можно объявлять переменные, а потом использовать их в качестве аргумента для cp и cd. См. также $OLDPWD и event designators. А ещё из терминала можно копировать текст --- мышкой или через screen.

А портянки make-файлов конечно же удобнее проектов IDE, я уже не говорю про нормальную навигацию по коду.

Здесь тоже можно поспорить. Но, вообще, в данной теме актуальнее вопрос не удобства, а как заставить человека понять процесс компиляции и устройства проекта, особенно если учесть, что добровольно средний человек будет прилагать минимум усилий. Поэтому для студентов вручную написанный Makefile должен быть обязательным на начальном этапе, сразу как только размер программы перевалит за один файл.

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

Ну да, ну да. Особенно удобно бродить в консоле по

незнакомой/развесистой файловой системе

Если вдруг так получилось, делайте find . | grep в поисках что вам там надо, это несложнее чем пользоваться поиском в венде.

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

Тут надо рассматривать конкретный пример

А портянки make-файлов конечно же удобнее проектов IDE,

make файлы вполне функциональные и дают достаточно несложными методами добиться очень хороших результатов. Более того makefile является свободной кроссплатформенной утилитой, т.е. если вы берёте чужой код, то больше чем наверняка вы сможете собрать исходник и под win и под lnx и под mac, и под dos, а самое важное что вам не придётся покупать нужную IDE для этих целей. Иными словами знать что такое makefile очень полезно, даже если вы используете cmake, или IDE которые генерируют эти make файлы.

я уже не говорю про нормальную навигацию по коду.

Grep, ctags никто не отменял. Но, тут стоит согласится, что для c++ удобнее к vim прикрутить eclim, vim далеко не идеален...

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

Если у вас есть некоторое случайное событие X, имеющее n исходов с вероятностями p_i, то вы имеете неопределённость H(X) = sum_{i=1}^n p_i log(p_i) (по Шенону). В результате наступления события (измерение, наблюдение, в общем, какой-то способ регистрации оного) эта неопределённость снимается, так что мы получаем объём информации, равный H(X).

Для лучшего понимания следует рассмотреть крайние случаи. Если для некоторого i=k p_k =1, а все прочие p_(i<>k) = 0, тогда никакой неопределённости нет. Формула также покажет вам 0 (неопределённость разрешите по Лапиталю через производные). В результате измерения вы не получите никакой новой информации, поскольку итак знали исход (например, что на выборах в Беларуссии победит Лукашенко). Напротив, если все p_i равны, тогда объём энтропии будет максимален и равен log(n). Это случай максимальной неопределённости, потому что у всех шансы равны. Соответственно, именно такое количество информации вы получите, пронаблюдав за событием.

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

Вообще-то, удобно. ls -R или find | less позволяют видеть всю информацию сразу, а не как в этих ваших двухпанельниках.

видеть всё информацию сразу это конечно круто, особенно если из корня пальнуть ls -R

find и grep это же для поиска чего-то, а я ничего не ищу. Мне просто надо получить представление о структуре неизвестной мне файловой системы и содержимом её каталогов

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

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

Вообще-то, удобно. ls -R или find | less позволяют видеть всю информацию сразу, а не как в этих ваших двухпанельниках.

Должно быть cawa имел в виду cmd. Там да. Там неудобно.

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

весьма ценная информация для начинающих программистов. Забавно ещё, что для представления любого исхода матчей из задачи на стр.165 достаточно двух бит.

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

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

В случае с find | less вы сослались, на что что данных слишком много, на случай с grep вы указали, что данных слишком мало....

В связи с чем вопрос, в каком таком особом виде вам предоставит информацию windows, при том что это не сможет это сделать консоль?

Что касается консоли так таковой, у ваc, например, есть файлы в системе blabla[0-9].txt, вам надо посчитать общее количество строк в этих файлах, причём исключая строки, где встречается слово «сипулька», как вы это сделаете, если умеете пользоваться только графическими приложениями? Как вы сделаете это на голой системе в windows? Как вы сделаете это на голой системе в linux?

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

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

Мне просто надо получить представление о структуре неизвестной мне файловой системы и содержимом её каталогов

Есть прекрасная утилита tree, например.

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

Ограничение — это неспособность использовать утилиты не для задуманных заранее ограниченных целей. Т.е. философия десктопных систем, в отличие от Unix-way.

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

весьма ценная информация для начинающих программистов.

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

Легитимно, хоть и немного хардкорно. Возможно, абитуриенты в МГУ знают этот материал из физики.

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

В упор не вижу, каким боком/раком/etc информация о «достаточности» pentium-II устарела.

При компилянии небольшой программы на плюсах и 4 гигов оперативы может очень сильно не хватить. Лучше иметь 32 и SSD - промышленный стандарт, если конечно тоже не устарел:)

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

Есть прекрасная утилита tree, например.

Кстати может в словах cawa и есть доля истины. Отобразить список каталогов в виде свёрнутого дерева где можно тыкнуть по значку [+], может действительно в каких-то случаях может оказаться удобнее. Как считаете?

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

(неопределённость разрешите по Лапиталю через производные)

А что это даст с точки зрения логики и понимания?

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

Легитимно, хоть и немного хардкорно.

Вот и у меня мышление забуксовало ;-)

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