LINUX.ORG.RU

Переиздание книг Столярова по программированию

 


9

4

Скандально известный на ЛОРе Андрей Викторович Столяров выпустил новое издание своего учебного пособия «Программирование: введение в профессию» и обновил PDF-версии:
«Азы программирования»
«Системы и сети»
«Парадигмы»
В новом издании 4-томник стал 3-томником.

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

>>> Сайт автора

★★★★★

Проверено: Shaman007 ()
Последнее исправление: Zhbert (всего исправлений: 3)
Ответ на: комментарий от Vudod

почему в Ардуино надо написать 23 строчки и всё работает

Вот по такому принципу и надо учить «АЛГОРИТМАМ», а уже потом Си. Человек уже будет уметь расставлять точки с запятыми и вигурный с круглыми скобки - не надо переобучать с begin-end`ов

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

И чем тогда отличается

По воспоминаниям, второе устанешь ждать пока скомпилируется и слинкуется.

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

Речь в треде идёт о программистах.

Это вы на пару так решили почему-то. Тред о переиздании книги.

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

Можно на любом языке себе «отпилить ноги», в том числе и на паскале - просто с самого начала не давайте возможности этого сделать на Си. Например, с Лиспом, как это сделать я не знаю, возможно потому что я его смутно представляю, Си знаю - представляю даже как пятикласнику объяснить каждую строчку Си программы, но я не преподаватель, я не смогу ему объяснить дыже «пузырёк».

Нет, тут вопрос перехода количества в качество. Если отпиливание ног происходит раз в 2-3 занятия, то это терпимо и можно указать, что так делать нельзя. Именно так дело обстоит во многих современных языках типа go или d. Это и есть золотая середина. Паскаль долгое время этому правилу соответствовал, просто он действительно морально устарел, от него студентов воротит и этот фактор сбрасывать со счетов нельзя.

Если отпилить себе ноги не получается, но программа не хочет компилироваться ни в какую, как в Аде или Окамле, это другая крайность. Тут студенты перестают вовсе писать что-либо и впадают в депрессию, что они — идиоты. Именно такие языки используются там, где важна правильность работы: для космических ракет или финансовых роботов. Это их ниша. Учить на них нельзя, потому что обучающиеся должны совершать ошибки и править их.

А есть языки типа Си или ПХП, на которых можно творить всё, что хочется, и писать такой код, который работает совершенно невообразимым способом. Вот на них тоже нельзя учить. Там придётся каждому по 10 раз за пару рассказывать про исключения из правил или про . Потому что есть общепризнанные абстрацкии вроде типов данных и их крайне нежелательно смешивать. Есть разделение на цикл с условием и цикл со счётчиком, не надо их смешивать, потому что оператор выбора должен обеспечивать единственный выбор, а не проваливаться вниз по нескольку раз. Модули должны быть модулями, а не кусками кода. Слишком много проблем и количество переходит в качество.

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

Ушами на учебных часах хлопать не нужно и ничего не потеряешь.

Да тут тред, походу свалился в «обучи обезьяну(с ушами или без) АЛГОРИТМАМ, Си сложен, Паскаль прост».

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

Да, я прошёл начальный цикл ««черепаха» + «корвет_бейсик»» (это и «влюбило» меня в программирование), поступил в ВУЗ, на первом курсе не знал, что такое дискетка 5`25, начинал с Паскаля. Вышел монстром в Си и С++ по меркам 1999года, на работу без проблем, сменил работу - без проблем… Всё пучком. А то как давали нам Си/Си++ - тихий ужас. Плюсы давал человек на 4 года старше меня(аспирант). Я получил «автоматом 5» потому что нашёл ошибку в его задании, подошёл к нему и он признал ошибку -> ООП я здал (на уровне того BC++ 3.1, т.е Си_с_плюсами).

Из таких как я, понявших Си и Си++ было около десятка из сорока. Остальные так и застряли в Паскале/Дельфи. Большинство из тех кто поняли Си - были на голову выше меня (написать, на первом курсе вирусок на асм86 который потом всё-таки вырвался и о нём ещё DrWeb писал - один из них, но он до института уже на асме лабал), остальным так и не дошло Си, по простой причине - преподаватели «не умеют его готовить».

Потому я и упёрся почитать Столярова - вдруг он подход нашёл.

А K&R - не - это не учебник, это пособие…

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

По воспоминаниям, второе устанешь ждать пока скомпилируется и слинкуется.

Да… Для обучения это архиважно.

Это вы на пару так решили почему-то. Тред о переиздании книги.

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

Так что бухгалтеров, школьников, математиков приплетать не надо - речь идёт о профиле «программирование»

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

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

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

Перечитайте тред сначала

Ээээ, не хочу!

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

…студентов МГУ травмирует. … автор несклько застрял в 90х и опасливо поглядывает на хипстерские технологии 2000х.

Ну может учёному совету ВМК (или кто там одобряет-устанавливает образовательные курсы) виднее? Наверняка там есть яркие учёные. А ты кто такой? ;) (в науке, CS)

Я его книжки не читал :) Тред тоже. Даже комменты к этому посту, слишком много.

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

Да тоже особо не воротит. Речь о том, что не надо преподавать профильным специальностям «мёртвые инструменты», в частности Паскаль программистам - теряются учебные часы.

Самому сейчас на Паскале (Дельфи) приходится частенько кодить/исправлять - по мелочи, но там легаси с 2000х годов висит. Новьё пишу в таком же, лично мне противном, RAD Studio Builder, но уже на плюсах(оно приятнее).

Личные предпочтения - это последнее, что нужно учитывать при выполнении задачи, мне хоть на Лого - лишь бы платили за работу и этот «инструмент» смог помочь выполнить ТЗ.

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

Ну может учёному совету ВМК виднее

виднее тому, у кого ноc^Wвакансии размещены

А ты кто такой

Я - в прошлом нанимающий менеджер, теперь - технический специалист на собеседовании.

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

в Си и Си++ нумерация массива от 0, а в паскале от 1


Вообще-то, с любого целого


На самом деле — с любого порядкового :-)

  TMas = array[10..15, 'X'..'Z'] of Integer;

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

технический специалист на собеседовании.

И как часто встречается подобное:

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

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

так это мало

Для 70-тысячного городка это много. У нас грамотные слесаря-КИПовцы по вахте к нам ездят с большухи, а вы.. мало…

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

Слушай, вот прямо сегодня, немолодой человек 40 лет с опытом работы рассказывал дичь на вопрос «у тебя есть задача поставить линукс по твоему выбору на 100 хостов инструментарием по твоему выбору». И это было даже хорошо, потому что предыдущий немолодой человек просто блеял. Вакансия - сеньор-помидор Девопс.

Я не спрашиваю «вы отключили в сети ICMP весь, что сломалось?» или «вы бампнули сертификат в 389-srver, почему отвалился nfs?» нет. Почему Роскомнадзор не собирает HTML request на своем оборудовании тоже, принцип работы Meltdown тоже не спрашиваю.

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

С другой стороны, когда на ардуине тебе надо скачать файл по фтп, а параллельно у тебя по прерыванию обновляется светодиодная строка 128×16 светиодиодов, то неплохо бы на низком уровне понимать, почему тебе надо отключать прерывания на это время. Ибо памяти на всё не хватит — тогда у тебя получится, что тебе одновременно нужны и буфер на 256 байт под состояние светодиодов, и два сетевых сокета под ftp, и буфер под общение с ftp, и буфер для скачки файла по ftp, плюс разные другие переменные, а ОЗУ у тебя всего 2кб..

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

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

Интересен ответ ;)

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

Ой-вэй, ну мы реально хотели услышать на тройку, что есть такой кикстарт-файл в редхете, на четверку, что вот есть такой Фореман, на пятерку порассуждать о проблеме бекенд-агностицизма Terraform’а. Вообще, человек должен знать идею, а не инструмены. Как бы интересно что идеологически отличает Ansible от Puppet’а (ну, сейчас оно сгладилось, но понятно об чём речЬ), конечно, но прежде всего - сама идея происходящего.

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

Да. ДА. ЗНАЕТ. ПАСКАЛЬ!11

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

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

Я не админ и не сетевик даже близко, но про PXE помню, т.к. постоянно отключаю на новых компах клЫентов. А он хотя бы упомянул?

Или вы про boot-net-install :(

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

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

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

Не, вот у тебя есть потребность раскатать 100 хостов с ПО управления кофеварок. Бюджет неограничен, инструмент по вкусу, твои действия?

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

Да пофиг, мне инетересна идея и ход мысли, правильного ответа нет. Есть направильный, типа я со своего ноутбука буду монтировать образ RHEL7 чтобы на vmware мышкой создвать виртуалки.

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

Зависит от кофеварки. Как она умеет обновляться/прошиваться? Через программатор? Через выпайку и замену ПЗУ? По COM-порту? По USB? По вафле/Ethernet`e - тогда что поддерживает?

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

Это же классика, «вы ввели google.com в строке браузера, что произошло, постарайтесь уложиться в рабочий день», ну (если что, упорото-исчерпывающий ответ https://github.com/alex/what-happens-when).

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

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

Если тонкий клиент допустим, от можно его замутить.

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

остальным так и не дошло Си, по простой причине - преподаватели «не умеют его готовить».
Потому я и упёрся почитать Столярова - вдруг он подход нашёл.
А K&R - не - это не учебник, это пособие…

М.,Мир,1988

/* инвентаризация одной книги */
#include <stdio.h>
#define MAXTIT 41     /* максимальная длина названия + 1 */
#define MAXAUT 31     /* максимальная длина фамилии автора + 1 */
struct book {         /* шаблон первой структуры: book 
                            является именем типа структуры */
  char title [MAXTIT];  /* символьный массив для названия */
  char author [MAXAUT]; /* символьный массив для фамилии автора */
  float value;          /* переменная для хранения цены книги */
};                    /* конец шаблона структуры */
main( )
{
  struct book libry;    /* описание переменной типа book */
  printf(" Введите, пожалуйста, название книги.\n");
  gets(libry. title); /* доступ к элементу title */
  printf(" Теперь введите фамилию автора.\n");
  gets(libry.author);
  printf(" Теперь введите цену.\n");
  scanf(" %f ", &libry.value);
  printf("%s, %s: %p.2f \n", libry.title, libry.author,
                                        libry.value);
  printf("%s: \" %s \" \(%p.2f\)\n", libry.author, 
                            libry.title, libry.value);
}

Вот образец работы программы:

Введите, пожалуйста,  название книги.
Искусство программирования для ЭВМ 
Теперь введите фамилию автора.
Д. Кнут
Теперь введите цену. 
5р.67
Искусство программирования для  ЭВМ,  Д. Кнут: 5р.67 
Д. Кнут: "Искусство программирования для ЭВМ"  (5р. 67)
vM ★★
()
Последнее исправление: vM (всего исправлений: 1)
Ответ на: комментарий от Shaman007

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

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

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

Блин. Идея в том, что в идеальном мире 100 одинаковых хостов деплоятся нажатием одной кнопки, редеплоятся сами по срабатыванию триггеров. Мне реально пофиг на дистрибутив, systemd, шрифты, X11, лицензии и т.п. Мне инетерсно как кандидат представляет себе как редеплой 100 хостов за неделю отличатся от редеплоя за день, от редеплоя за 120 минут, от редеплоя не приходя в сознание.

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

Бюджет неограничен, инструмент по вкусу, твои действия?

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

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

А вот этот ответ меня устраивает. Но тебя пересунут на менеджера.

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

Хе-хе, а с динамическими так можно ? Я может что-то путаю, но вроде у них так уже не получится.


Со встроенными — нет, но с доступом по указателю — вполне:

type
  PIntMatrix = ^TIntMatrix;
  TIntMatrix = array [10..10, 1..4] of Integer;
var
  p: PIntMatrix;
  i, j: Integer;
begin
  Write('n: '); Read(n);
  GetMem(p,n*SizeOf(p^));
  {...}
  for i:=10 to 10+n-1 do begin
    for j:=1 to 4 do
      Write(p[i,j]:8);  // Write(p^[i,j]); {в прежнем синтаксисе}
    WriteLn;
  end;
  FreeMem(p);

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

А в Фортране можно даже отрицательные индексы использовать и подсовывать вместо индекса массив индексов.

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

Вспоминается байка про собеседование в рамках сетевого оборудования и в конце вопрос допрашиваемого: вы всегда курьерам такие вопросы задаёте?

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

Слушай, вот прямо сегодня, немолодой человек 40 лет с опытом работы рассказывал дичь на вопрос «у тебя есть задача поставить линукс по твоему выбору на 100 хостов инструментарием по твоему выбору». И это было даже хорошо, потому что предыдущий немолодой человек просто блеял. Вакансия - сеньор-помидор Девопс.

Я не спрашиваю «вы отключили в сети ICMP весь, что сломалось?» или «вы бампнули сертификат в 389-srver, почему отвалился nfs?» нет. Почему Роскомнадзор не собирает HTML request на своем оборудовании тоже, принцип работы Meltdown тоже не спрашиваю.

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

Про Роскомнадзор вопрос я даже не понял.

Только про принцип работы Meltdown могу что-нибудь рассказать.

В общем, хорошо, что я не сеньор-помидор Девопс. %)

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

Да. ДА. ЗНАЕТ. ПАСКАЛЬ!11

АААААА!!!

Как перестать орать!?

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

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

Harald ★★★★★
()
Ответ на: комментарий от bormant
  PIntMatrix = ^TIntMatrix;
  TIntMatrix = array [10..10, 1..4] of Integer;

Ужасно. А зачем нам крышечка ^, если мы креативно заменяем её буквой P. Это типа более читабельно по мнению паскалистов?

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

в Фортране можно даже отрицательные индексы использовать

const
  m: array [-1..1] of Char = '<=>';


подсовывать вместо индекса массив индексов

Не являясь большим знатоком Фортрана, не совсем понял, о чем именно речь, можно пояснить чуть более развернуто?

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

А зачем нам крышечка ^

Требование синтаксиса языка.

если мы креативно заменяем её буквой P

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

более читабельно по мнению паскалистов?

По крайней мере менее двусмысленно, чем * у сишников ;-)

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.