LINUX.ORG.RU

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

 


9

4

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

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

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

★★★★★

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

Я уже высказывал своё мнение о вашем месте преподавания: «как преподаёте - так и плывут».

Мои как раз на эти вопросы ответят. А вот ваши как раз и плывут и идут работать не ко мне.

Reset ★★★★★
()
Ответ на: комментарий от Reset
  1. Речь шла о «нулёвых» первогодках и ты предлагал вместо ClrScr; использовать gnuplot, на что я тебе и ответил.
  2. Я не топлю за «промышленный код»
  3. Речь в треде всё ещё идёт о студентах-программистах на первом курсе - какое нахрен «настоящем промышленном коде за который ты вроде как топишь» - перепил???
drfaust ★★★★★
()
Ответ на: комментарий от Reset

А вот ваши как раз и плывут и идут работать не ко мне.

Кто мои???

Вы говорите о тех кандидатах: слесарях-КИП, что бары от миллиампер не отличат? - они к вам идут работать?

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

Речь шла о «нулёвых» первогодках и ты предлагал вместо ClrScr; использовать gnuplot, на что я тебе и ответил.

Блин, какое нахрен clrscr? Ты графики предлагал текстом строить, я тебе сказал, что это не нужно. И clrscr тоже не нужно!

Речь в треде всё ещё идёт о студентах-программистах на первом курсе

Если студент программист не в состоянии на зачете открыть Эксель (или любую другую программу) и загрузить туда csv файл-выхлоп своей программы, то его однозначно отчислять надо! Я с такими пока не сталкивался, но всякое бывает.

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

А кто учит здесь – «как преподаёте - так и плывут» ? Поэтому каков вопрос таков и ответ. Я учу нормально.

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

Если студент программист не в состоянии на зачете открыть Эксель (или любую другую программу) и загрузить туда csv файл-выхлоп своей программы, то его однозначно отчислять надо!

Ты первогодкам предлагаешь изучать csv - ладно, он простой - пофиг, что понятие файла ему ещё не давали, даже текстового. Но как он сдаст этот график, если у него дома в excel настроено по дефолту comma separated в ‘,’ и дефолт тип «число», а у препода где он сдаёт comma separaped в ‘.’ и дефолт тип в «общий»???

Не городи уже хрени - вроде норм начинал, а сейчас…

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

Ты сморозил херню, а теперь придумываешь миллион отговорок. Внезапно, файл можно создать до изучения понятия файл в ЯП. Подсказка: < и > в командной строке. Сюрприз, да?

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

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

Я и пытаюсь доказать, что всё это реально просто сделать без «мертвечины» в виде Паскаля. Для профильных ВУЗов будет лучше начать с Си

Ещё раз: это НЕВОЗМОЖНО сделать, если исходить из положения «нулевые знания у первогодок». В Си слишком много либо «магии», либо длинных объяснений, зачем всё это нужно.

Ну вот элементарное:

#include <stdio.h>
int main (void)
{
  puts ("Hello, World!");
  return 0;
}

Сравните с тем же на Паскале:

program One;
begin
 writeln("Hello, World!");
end.

Где требуется меньше пояснений? При этом вы должны учитывать, что для первогодок фразы в этом заголовке объявляются функции, связанные с вводом и выводом данных; в заголовках (которые как правило представлены отдельными заголовочными файлами) обычно объявляются предоставляемые соответствующими им библиотеками функции, типы данных, константы и определения препроцессора – словесный шум.

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

…вакансии… …нанимающий менеджер, теперь - технический специалист…

Хм.. похоже ты не понял меня (или я тебя). Я перефразирую тогда. Науке – научное. Индустрии – индустриальное. Ты из индустрии, и не из науки. Когда комментируешь чужие дела (научные), не являясь в них специалистом, не стоит употреблять резкую лексику (и возможно, стоит вовсе воздержаться от комментариев).

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

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

Вы не врубились. Как быть, если речь идёт о, как простейшее, процедуре, обсчитывающей несколько математических формул?

Ну, например, получать данные в градах, переводить их в градусы и радианы и высчитывать длину дуги, исходя из введённого радиуса. Т.е. возвращать надо и градусную меру, и радианы, и длину.

В паскалевскую процедуру можно впихнуть сразу всё, а вот в Си при решении «в лоб» потребуется 3 функции.

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

Насколько понимаю, a(i) — это срез, аналогичный, например, a(3:4).

Не совсем. Выдёргиваются значения a(), с индексами перечисленными в массиве i. Но пример верный.

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

Строгая/сильная vs слабая типизация это не то же самое, что и статическая vs динамическая.

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

  1. снижает эффективность из-за необходимости реализовывать все переменные или как ссылки, или как структуры;

  2. снижает читабельность, т. к. переменная, описанная в начале как int, в середине может оказаться float, а в конце — bool.

self.next = None

В этом был неправ по отношению к питону.

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

Если уж учить Си - то опираемся на стандарты C89, C99

А почему не C18 или хотя бы C11? Да и речь в том каменте шла больше не о си, а о побочных эффектах в си и не только в нём.

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

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

С этим согласен. Но как раз это препод, как мне кажется, вполне может объяснить даже в рамках си.

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

возвращать надо и градусную меру, и радианы, и длину. В паскалевскую процедуру можно впихнуть сразу всё, а вот в Си при решении «в лоб» потребуется 3 функции.

В си тоже можно возвращать результат по ссылке. А в паскале разве не так?

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

Да, это весомый аргумент. Увижу Крокодила, спрошу. Интересно, да.

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

В си тоже можно возвращать результат по ссылке.

Т.е. очередная магия?

А в паскале разве не так?

В Паскале пишется procedure(anr_gon:real; var ang_degree,ang_rad,L:real); и не парится мозг. При этом всё объяснение: то, что до var – передаётся для расчётов, то, что после – возвращаемые значения.

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

При этом всё объяснение: то, что до var – передаётся для расчётов, то, что после – возвращаемые значения.

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

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

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

Хочешь оценку получить, будешь делать, что препод сказал. Они и делают. А форумы, вот они: https://www.cyberforum.ru/pascalabc/. Все сообщения там про то, как сделать домашку. Для сравнения, на С++ там только половина постов про домашку. А паскаль - все.

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

А интегралы в школе не словесный мусор? Мусор, но только для тех, кто не хочет учиться. Уж в ВУЗе-то надо понимать, что туда идут добровольно.

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

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

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

почему же программа должна начинаться со слова «программа по_имени, а дальше begin»

Потому что так легче разгребать листинги результатов работы студентов в системе пакетной обработки. И точка в конце программы по схожим причинам (кроме удобства остановки студенческого парсера ). И не сразу label, const, type, var, а после

PROGRAM LAB1_PETROV_72(PETROV);

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

Если мы учим не веб-макак, всё программирование которых сводится к умению натянуть вёрстку на вордпресс, то понимание работы аппаратной части на уровне видимой для ПО архитектуры — необходимо.

Не вижу ничего плохого начинать с Си.

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

Выше рассматривают случай, что студент не понимает, что такое файл. Это ли не абсурд?

А Паскаль — мертвый язык, который студентом будет восприниматься как ненужная муть старых преподов-пердунов. И все их «базовые алгоритмы» и «научить основам» при переносе на Паскаль — точно так же.

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

Си может восприниматься точно так же.

Паскаль – учебный структурный COBOL с более короткой историей. Даже Algol не помер окончательно, потому что был языком системного программирования.

FreePascal, Pascal.ABC – очевидно, живые языки.

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

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

FreePascal, Pascal.ABC – очевидно, живые языки.

В сфере поддержания легаси?

Паскаль – учебный структурный COBOL с более короткой историей.

Вот именно что COBOL. Легаси такое легаси.

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

А паскаль им был?

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

Игрушечный UCSD Pascal был в системах с несравнимо более коротким сроком жизни, чем те, на которых сейчас в основном работает COBOL.

COBOL такой же живой, как C++. Без COBOLa мировая финансовая система рухнет, и не только она. Без java в основном пострадает только online.

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

COBOL такой же живой, как C++. Без COBOLa мировая финансовая система рухнет, и не только она. Без java в основном пострадает только online.

Окей. Принято.

А Паскаль зачем нужен в 2021?

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

За тем же, что и 30-40 лет назад: учить программированию с нуля. На нём можно и прикладные программы писать, как на учебном самолёте можно воевать, но это не очень эффективно, хотя примеры годных современных программ есть, тот же TotalCommander/DoubleCommander. Си сейчас — не язык общей практики, а по сути специализированный системный язык. Прикладные программы большой сложности (и даже средней) на нём уже не пишут много десятилетий. Linux был одним из последних успешных проектов. Это тоже язык legacy. Винда написана на диалектах Си++. Вообще, всё в Си мире написано на диалектах и использование специфических для этих диалектов черт является всегда существенным. Какому Си вы хотите учить: 89, 99, 11, 18?

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

А где купить Паскаль в 2021?

От Паскаля сейчас мало что зависит. Наверняка в Европе местами ещё эксплуатируются какие-то внутренние приложения, написанные на большом Паскале в прошлом тысячелетии. Плюс настольные приложения для микроЭВМ, написанные на наследниках TurboPascal и по. UCSD.

Живой FreePascal нужен Андрею Викторовичу для учебного пособия по основам программирования.

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

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

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

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

где купить Паскаль в 2021?

Купите FPC у меня, если уж нужно именно купить.
Возможно купить Delphi на embarcadero.com и у региональных представителей.

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

Linux был одним из последних успешных проектов. Это тоже язык legacy.

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

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

Линукс не был последним успешным проектом на си. Кроме него на си написан ворох веб-серверов (например nginx), интерпретаторов (например python), компиляторов (gcc и тд), ядер, библиотек и прочего, прочего. Бессчетное число живых проектов на активной стадии разработки (новые значительные фичи, улучшения архитектуры). Более того, на си постоянно появляются и новые проекты, что автоматически делает ложным твое заявление о языке-легаси. Язык не может быть легаси, если нам нем пишут новые проекты, развивают огромную массу старых живых, и к нему выходят новые стандарты.

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

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

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

компиляторов (gcc и тд)

C++ в gcc до сих пор не используется?

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

Последняя версия стандарта языка Паскаль вышла в 1990-е http://www.pascal-central.com/docs/iso10206.pdf Последний проект стандарта (с классами) так и не был рассмотрен, потому что никому не был нужен и интересен http://www.pascal-central.com/OOE-stds.html

FreePascal (нестандартизованный) жив, пока на FreePascal’е пишется и развивается сам FreePascal

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

Результат профанации

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

Последняя версия стандарта языка Паскаль вышла в 1990-е

Я просто напоминаю, что сейчас 2021 год.

FreePascal (нестандартизованный) жив, пока на FreePascal’е пишется и развивается сам FreePascal

Вещь в себе. А теперь давай сравним количество проектов на си и на фрипаскале. Сравнение будет не в пользу последнего.

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

Похоже, что топите в этой теме только Вы, уважаемый @liksys.

Может быть, выскажете Ваше экспертное мнение о 4 главе, посвящённой программированию на языке Си? http://www.stolyarov.info/books/pdf/progintro_e2v2.pdf

Понятно ли Андрей Викторович рассказывает о sequence points в 4.3.21 (стр.100)? Может ли у читателя сложится неверное представление о lvalue после изучения 4.3.16 (стр. 87 ) ?

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

C++ в gcc до сих пор не используется?

Да, действительно. Ну, минус один. На тезис это не влияет совершенно никак.

Может быть, выскажете Ваше экспертное мнение

Нет, я умываю руки. Экспертное мнение я высказывал на протяжении более чем 20 страниц, но, как выяснилось, большинство фанбоев паскаля плавает в элементарной теории, засиделись в кабинетах и/или просто-напросто не знают си. В такой ситуации их позиция в отношении преподавания основана не более чем на их слабой компетенции. Чтобы улучшить эту ситуацию, мне придется читать им курс по си и языкам вообще.

Заниматься же бесплатным рецензированием трудов автора я не собираюсь.

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

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

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

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

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

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

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

https://github.com/ultibohub/Discovering/blob/master/05-LCD16x2/LCD16x2.lpr

https://www.youtube.com/embed/yfsuwbfyjgM

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

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

Именно это я и называю зыбкой позицией.

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

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

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

Сам придумал - сам опроверг. Тебе уже объясняли в два горла, иди перечитывай все обоснования, пока не дойдет.

Всё что ты объяснил, то что тебе легче преподавать С. Такой себе аргумент. И как не раз здесь было сказано, с точки зрения преподавания паскаль выигрывает.

А дальше пошли детские аргументы про 20 часов, что дальше, с++ за 21 день?

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

Всё что ты объяснил

Нет.

детские аргументы

С твоей стороны.

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

Хочешь оценку получить, будешь делать, что препод сказал.

Или забью болт, как сделает большинство когда им не интересно. Может конечно сейчас не так ?

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

Хотя чутка вру ;-)
Строго говоря, проблема не здесь, тот же FPC вполне себе съест и такое:

  element = record
    stroka: TStroka;
    next: ^element;
  end;

Проблема всплывёт в списках формальных параметров:
procedure Pop(var stk: ^element; { в качестве типа параметра обязателен идентификатор типа }
              var s: TStroka);  

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

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

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