LINUX.ORG.RU

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

 


9

4

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

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

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

★★★★★

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

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

Простоые вещи в си эквивалентны простым вещам в паскале.

как-раз хотел написать, что нуачившись алгоритмике на паскале, нет (от слова «совсем») проблем перейти на C. или Вам-таки трудно?

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

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

Речь идет об одной конкретной задаче: подготовить студента-программиста за ограниченное количество учебных часов.

Это задача преподавателя, а не ученика. У 99% учеников ещё нет задач, для которых им нужно это программирование.

У тебя логика - научим программировать, ради программирования.

Программиста, а не околоайтишника, которому надо просто уметь алгоритмы рисовать, чтобы писать на каком-нибудь 1c потом или unreal script.

Программист это тот кто создаёт, ты не научишь его создавать, ты научишь его «Си побыстренькому». Так что ещё большой вопрос, кто по итогу будет полезней, бухгалтер которого научили 1с или этот «Си ради Си».

Когда ты готовишь ПРОГРАММИСТА, то учебные часы надо тратить не на мертвые языки, а на изучение алгоритмы, живые языки и архитектуру.

Изучение алгоритмов к ЯП никак не привязаны. Можешь на псевдокоде хоть учить. Программист этот тот кто создаёт и решает задачи, значит главная цель научиться это делать, а сколько на это уйдёт времени уже вторично.

Или ты действительно веришь, что для полного новичка, разница в осознании происходящего, между int a; a= 15 и var a: integer; a := 15; , сводится к различиям синтаксисе?

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

Перефразирую:

Есть изучение программирования, а есть изучение Паскаля. Ты пытаешься сделать эти два понятия тождественными.

Т.е. предлагаете все пять лет изучать программирование на листике бумаги рисуя блок-схемы, диаграммы,графы отношений в СУБД? Обломаю - без практического закрепления алгоритма в ЯП толку не будет. Будет «начитанный» мальчик и не более того. Для чего и придуманы лабы - разобрали qsort - реализуйте в коде, а если не реализовали, значит не поняли алгоритма.

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

Лично? Вот прям живьём видел?

Ага, именно так. Было бы странно ни разу не увидеть коллег живьём - особенно в доковидные времена.

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

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

так никто и не написал ничего подобного dlangui - а это проект одного человека

Который по твоим же словам его забросил.

Так что как по мне очевидный плюс D и очевидный минус Расту

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

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

Это, кажется, была еще та эпоха, когда делфи весьма активно использовался. Я несколько помладше, так что помню, как этот самый делфи мы еще изучали в университете. Тогда еще не было понятно, что он умрет, и народ шел изучать кто куда. Кстати, примерно тогда же с восторгом начали бегать апологеты сишарпа. Некоторые особо отбитые пытались его притащить и на линукс, впрочем, оно всё сдохло, не успев толком родиться. Интересно, многие еще помнят мигелюшку с его моно?)

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

Так что хочется или нет, а без сишечки сейчас в серверной разработке все равно никуда.

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

Изучение Паскаля — не трата времени.

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

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

живые языки

Что, прям на все живые языки? Для php-иста, хаскелиста, 1сника или сишарпщика твой си не живее паскаля, в своей жизни они могут ни разу с ним не столкнуться. Впрочем, если лет 10-15 назад я бы топил за паскаль в качестве языка обучения, то сейчас я больше тяготею к питону в этом качестве. Не потому что паскаль мёртв, а потому что в питоне можно больше парадигм программирования продемонстрировать студентам.

мыслью по древу

Мысию по древу. «Боян бо вещий, аще кому хотяше песнь творити, то растекашется мысию по древу, серым волком по земли, шизым орлом под облакы». То есть Боян растекается белкой по древу, серым волком по земле и сизым орлом под облаками.

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

У тебя логика - научим программировать, ради программирования.

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

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

Т.е. предлагаете все пять лет изучать программирование на листике бумаги рисуя блок-схемы, диаграммы,графы отношений в СУБД?

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

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

Твой же пример, разобрали qsort - если понимание это конечное знание о чём либо, какой процент в нём это язык?

shpinog ★★★★
()
Последнее исправление: shpinog (всего исправлений: 1)
Ответ на: комментарий от anonymous
faust@archlinux ~/П/C/РАзная всячина> cat 1.cpp
#include        <iostream>                                                                                                                                                                                          
                                                                                                                                                                                                                    
int     main(void)                                                                                                                                                                                                  
{                                                                                                                                                                                                                   
    int i;                                                                                                                                                                                                          
                                                                                                                                                                                                                    
    std::cout<<i;                                                                                                                                                                                                   
                                                                                                                                                                                                                    
    return 0;
}⏎                                                                                                                                                                                                                  faust@archlinux ~/П/C/РАзная всячина> g++ 1.cpp
faust@archlinux ~/П/C/РАзная всячина> ./a.out
0⏎                                                                                                                                                                                                                  faust@archlinux ~/П/C/РАзная всячина>
drfaust ★★★★★
()
Ответ на: комментарий от liksys

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

Первое да, второе нет. Ты не можешь знать, что для него будет полезным. Завтра соотношение количества программистов знающих си и вакансий, относительно вакансий на условном PHP станет 1 к 10000, и вся полезность сведётся к минимуму.

потратим его время на что-то полезное

В пустом знании Си или любого другого языка нет ничего полезного, полезное будет когда он на нём что-то сделает. А учить делать что-то полезное в программы Вузов не входит, и учебников по этому делу ещё не придумали.

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

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

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

Ты не можешь знать, что для него будет полезным.

Могу. Я точно знаю, что паскаль для него будет бесполезным в работе инструментом с вероятностью, близкой к ста процентам. А на той же сишечке по-прежнему будет написан условный PHP, как и условный Python, и условный Nginx, и условное ядро.

А учить делать что-то полезное в программы Вузов не входит

Сделал мой день :)

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

Могу. Я точно знаю, что паскаль для него будет бесполезным в работе инструментом с вероятностью, близкой к ста процентам. А на той же сишечке по-прежнему будет написан условный PHP, как и условный Python, и условный Nginx, и условное ядро.

Жду от тебя список вакансий в РФ:

1)Core разработчик языка python 2)Разработчике Nginx 3)Разработчик ядра Linux

Раз ты уповаешь на полезность, то давай дискутировать в твоих категориях.

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

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

Ну так для меня тоже польза есть от D и намного больше чем от Раста. Я вообще не понимаю, что ты хочешь сказать. Я ничего не имею против раста, это хороший язык для своей ниши. D хорош для своей. И у того, и у того есть свои достоинства и недостатки. Каждый выбирает для себя подходящий инструмент.

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

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

З.Ы. И я бы не сказал, что dexed это лучшая IDE для D

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

Завтра соотношение количества программистов знающих си и вакансий, относительно вакансий на условном PHP станет 1 к 10000, и вся полезность сведётся к минимуму.

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

в довесок: https://www.tiobe.com/tiobe-index/

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

Какое милое возведение в абсолют.

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

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

И так далее, и в том же духе.

А теперь я жду от тебя список тех, кому будет трудно жить без паскаля.

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

На расте например есть недо-OS, с графическим интерфейсом. Биндинги никто не отменял. И да, на расте есть библиотеки для построения gui, уровень ущербности которых примерно в одной категории с dlangui.

Будем объективными, если бы все они и dlangui престали завтра бы существовать, 99.99% этого бы не заметили.

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

Который по твоим же словам его забросил.

Ну видимо проблемы какие-то у него. Он начал искать кому передать его и окончательно пропал. Это же жизнь. Тут дело не в этом. Дело в том, что на D один человек может написать то, что на Расте (при большем числе разработчиков) вообще никто и не написал.

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

Так я не отрицаю эту очевидную истину. Я про то, что на D можно в одного писать вещи, которые на Расте пока не осилили. Да, D не дает таких гарантий безопасности, как Раст, но он дает возможность писать то, что на Расте написать как минимум сложно. При этом D безопаснее чем С++ и тем более сишечка.

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

Будем объективными, если бы все они и dlangui престали завтра бы существовать, 99.99% этого бы не заметили.

Согласен. Поэтому предлагаю на этом и закончить. Можно даже девяточку после запятой еще добавить.

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

И так далее, и в том же духе.

Их не меньшинство, а статистическая погрешность в сумме всех программистов.

А теперь я жду от тебя список тех, кому будет трудно жить без паскаля.

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

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

Вау 1 вакансия. Правда и та не подошла, он же только сишечку знает, а там ещё питон нужен и ещё опыт работы с микроконтроллерами. Условный студент в пролёте.

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

си и паскаль являются ущербными с точки зрения нахождения работы

Очевидная ложь.

75 вакансий «Pascal программист»

2 809 вакансий «C программист»

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

А кто тебе сказал, что на выхлопе института студент должен знать только один язык?

Питон вполне подходит для изучения программирования на языках с динамической типизацией и «автомусором» - как ни как ещё один подход к программированию.

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

А кто тебе сказал, что на выхлопе института студент должен знать только один язык?

А кто сказал, что одним из них не может быть паскаль ?

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

Более того, питон отлично подходит для второго языка.

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

Дальше уже можно учить плюсы (с углубленным ООП), ФП и прочие чудесные вещи. Естественно, с живыми примерами.

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

2 809 вакансий «C программист»

И в скольких из них предполагается 1) отсутствие опыта работы 2) Достаточно знания одного Си ?

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

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

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

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

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

Может, но не нужен:

  1. из-за затрат на переобучение на Си, который придётся учить
  2. он невостребован - мёртвый груз
drfaust ★★★★★
()
Ответ на: комментарий от liksys

Это не пруф. Вы ребят сами оторваны от мира, и без всяких языков. У вас какие-то идеальные студенты в вакуме и такие же преподаватели, которые участиться в Идеалии.

Студенты по несколько языков знают, серьёзно ? 2% от общей массы?

Большинство к концу обучения и одного языка не знают, тайна?

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

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

из-за затрат на переобучение на Си, который придётся учить

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

Собственно автор книги это тоже утверждает, Паскаль у него просто трамплин.

он невостребован - мёртвый груз

Однажды носителей капиталистического мышления приравняют к нацистам.

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

Вы ребят сами оторваны от мира

Тебе два практикующих разработчика рассказывают про полезность си. Оторваны от мира. Ок.

А для тех 2% по сути не важно какой язык, им и вуз не нужен для изучения программирования

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

Однажды носителей капиталистического мышления приравняют к нацистам.

Чел, попустись.

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

Так это вы мне пытаетесь навязать, что я топлю за Паскаль и за единственность. Все мои сообщения как раз говорят, о том, что язык вторичен.

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

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

Студенты по несколько языков знают, серьёзно ? 2% от общей массы?

Большинство к концу обучения и одного языка не знают, тайна?

Какой красивый у вас ВУЗ.

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

Я вынес прекрасные знания Си и С++ (того времени - сейчас от плюсов дико отстал), АСМ-386, Паскаль, Foxpro/SQL(которые позволили мне успешно поддерживать и дорабатывать СУБД на clipper`е).

И я не те 2% вундеркиндов - я не попал по баллам на военную кафедру, средний бал по диплому ~4, очень много трояков…

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

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

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

Тебе два практикующих разработчика рассказывают про полезность си. Оторваны от мира. Ок.

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

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

В его текущем виде - никак. Из конфетки говно можно сделать, а наоборот уже нет. И проблема там не в Си vs Pascal, а в самой системе образования и отсутствия дальнейших лифтов.

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

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

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

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

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

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

Вы просто топите за то, что ближе

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

В его текущем виде - никак

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

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

Ты уже столько сообщений утверждаешь исключительность

Где?

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

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

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

Твой же пример, разобрали qsort - если понимание это конечное знание о чём либо, какой процент в нём это язык?

Речь идёт о том, что бы не тратить впустую время на паскаль, алгол или ещё к-либо «уходящий» язык. Речь идёт о том, что бы сразу начать с Си. Аккуратно, не торопясь. По себе скажу - переучиваться студенту очень сложно. Пишешь на Си, в башке алгоритм рисуется, пальцы на клаве автоматом вбиваюn begin-end.

Такая же проблема и при переходе с процедурного на ООП - многие так и не осилили - так где проще, быстрее и эффективнее сделать через ООП - долбят в С++ обычным процедурным…

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

Пишешь на Си, в башке алгоритм рисуется, пальцы на клаве автоматом вбиваюn begin-end.

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

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

Какие-то ты ужасы рассказываешь.

Это реальность моей учёбы в ВУЗе - первое время (после пары-тройки хелловордов на Си), а лабы ограничены по времени - в 90х компа-то своего небыло, и года на Паскале - дают строки, думаешь как там подсчитать что-то, набиваешь шаблонное начало и получается

int main(void)
Begin
End.
Точно так же путаешься в функциях - набивая паскалевские вместо Сишных...

Но это быстро проходит...

А вот процедурное выбить из башки при изучении ООП - намного сложнее.

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

давайте тогда учить алгол, почему бы нет.

Физик-астроном — профессиональный педагог. Он учил начинающих программировать на примере Алгола, затем Паскаля, потом Си, чуть позже - т.н. «C/C++», и, наконец, C++. В своё время. Продолжал бы учить на базе учебного подмножества так ненавидимого обсуждаемым автором «современного C++», но заслуженному педагогу уже пора на пенсию.

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

Таким образом вы превращаете С++ в Си.

Не превращаю.

не научатся инициализировать переменные заранее

Значит их нужно научить инициализировать переменные и почаще сохраняться. Некоторые реализации C++ могут на это забить.

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

научим программировать студента-программиста, дадим ему полезный инструмент

и получим синдром утенка

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

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

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

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