Gegenava · 29-Мар-16 11:47(9 лет 3 месяца назад, ред. 31-Мар-16 13:46)
Программирование: введение в профессию. 1. Азы программирования Год издания: 2016 Автор: Столяров А.В. Жанр или тематика: Программирование Издательство: МАКС Пресс ISBN: 978-5-317-05222-5 Язык: Русский Формат: PDF Качество: Издательский макет или текст (eBook) Количество страниц: 464 Описание: В первую часть книги вошли избранные сведения из истории вычислительной техники, обсуждение некоторых областей математики, непосредственно используемых программистами (таких как алгебра логики, комбинаторика, позиционные системы счисления), математических основ программирования (теория вычислимости и теория алгоритмов), принципы построения и функционирования вычислительных систем, начальные сведения о работе с командной строкой ОС Unix. Вторая часть посвящена начальным навыкам составления компьютерных программ на примере Free Pascal под ОС Unix. Материал ориентирован на изучение в будущем языка Си, так что, в частности, много внимания уделено работе с адресами и указателями, построению списков и других динамических структур данных; в то же время многие возможности Паскаля из рассмотрения исключены. Даются сведения о правилах оформления текстов программ, о тестировании и отладке.
Примеры страниц
Оглавление
Предисловие первое, философское.............................................. 8
Предисловие второе, методическое.............................................. 12
Предисловие третье, напутственное.............................................. 28
Предисловие к первому тому ........................................................ 32
1. Предварительные сведения 34
1.1. Что такое компьютер: немного истории............................... 34
1.2. История ОС Unix ....................................................................... 48
1.3. Как компьютер работает ........................................................ 52
1.4. Как правильно использовать компьютер............................ 60
1.5. Теперь немного математики..................................................... 106
1.6. Программы и данные .............................................................. 162
2. Язык Паскаль и начала программирования 194
2.1. Первые программы.................................................................... 195
2.2. Выражения и переменные........................................................206
2.3. Управление последовательностью выполнения...................219
2.4. Подпрограммы.......................................................................... 240
2.5. Ещё о выражениях.................................................................... 254
2.6. Конструирование программ.....................................................261
2.7. Символы и их коды; текстовые данные ...............................271
2.8. Система типов Паскаля ...........................................................287
2.9. Строки..........................................................................................308
2.10. Оператор выбора .................................................................... 317
2.11. Полноэкранные программы................................................. 319
2.12. Файлы .......................................................................................332
2.13. Адреса, указатели и динамическая память ......................348
2.14. Ещё о рекурсии ....................................................................... 389
2.15. Ещё об оформлении программ ........................................... 407
2.16. Тестирование и отладка ........................................................429
2.17. Модули и раздельная компиляция..................................... 446
Список литературы.......................................................................... 458
Предметный указатель .................................................................... 459
Gegenava
Спасибо за труд, но автор книги выкладывает ее электронную копию в публичный доступ. Поэтому если Вам не сложно, то раздачу можно обновить более качественной версией. p.s.Книга была создана в рамках народного финансирования. Если кто считает данный труд полезным, то может сделать пожертвование на второй том на сайте ее автора.
Автор знаком как с виндой, так и с никсами, адекватно оценивает эти системы с точки зрения программиста и способен к внятной аргументации своих взглядов. Эпитеты "лютый фанат" и "хейтер" к нему может применить разве что человек, знакомый с виндой как пользователь, а о никсах только слышавший бородатые шутки от таких же "программистов". То бишь тот, кто сам подходит под эти эпитеты и проецирует их на другого.
А ты попробуй кроме слова "Паскаль" прочитать и другие слова в аннотации. Или даже, о ужас, прочитай многабукав в предисловии. Глядишь окажется, что автор совсем не ретроград, паскаль немного не тот, выбор его вполне обоснован и используется он несколько специфически.
77878505А ты попробуй кроме слова "Паскаль" прочитать и другие слова в аннотации. Или даже, о ужас, прочитай многабукав в предисловии. Глядишь окажется, что автор совсем не ретроград, паскаль немного не тот, выбор его вполне обоснован и используется он несколько специфически.
Автор считает, что нужно учить ассемблер. Этому посвящен второй том книги.
Это к нашей старой дискуссии..
Автор считает, что нужно учить ассемблер. Этому посвящен второй том книги.
Это к нашей старой дискуссии..
Ну и прекрасно, пусть себе считает. На что это влияет для человека, привыкшего к самостоятельному мышлению вместо ретрансляции мнения авторитетов?
Попробуй и ты научится читать аргументы, абстрагируясь от их автора.
На те аргументы, что приводит Столяров, я уже давал несколько раз ответ, в том числе и в нашей дискуссии, не вижу смысла делать это еще раз.
Автор считает, что нужно учить ассемблер. Этому посвящен второй том книги.
Это к нашей старой дискуссии..
Ну и прекрасно, пусть себе считает. На что это влияет для человека, привыкшего к самостоятельному мышлению вместо ретрансляции мнения авторитетов?
Попробуй и ты научится читать аргументы, абстрагируясь от их автора.
На те аргументы, что приводит Столяров, я уже давал несколько раз ответ, в том числе и в нашей дискуссии, не вижу смысла делать это еще раз.
Тогда чем тебе его книжки нравятся? Он же про низкоуровневый кодинг пишет в основном, только 4ом томе пошли плюсы (до STL!) и основы лисп. про питон и яваскрипт там ни слова.
Автор разбирается в предмете, толково излагает. Что еще надо?
Цитата:
Он же про низкоуровневый кодинг пишет в основном, только 4ом томе пошли плюсы (до STL!) и основы лисп.
про питон и яваскрипт там ни слова.
И что? Большая часть хороших книг затрагивает только узкую область. Керниган и Ричи написали книгу только про чистый C, а Ларри Уолл только про Perl. Каким образом это делает их в твоем мозгу плохими книгами, я понять затрудняюсь. Тебе нужна одна книга сразу про всё, чтобы ее прочитать и успокоится на этом?
77878505А ты попробуй кроме слова "Паскаль" прочитать и другие слова в аннотации. Или даже, о ужас, прочитай многабукав в предисловии. Глядишь окажется, что автор совсем не ретроград, паскаль немного не тот, выбор его вполне обоснован и используется он несколько специфически.
Обоснован чем, личным пристрастием и предубежденностью? Сам автор в книге пишет, что можно было бы использовать и С++ вместо Паскаля, но, видите ли, его смущает STL, как будто без STL-a С++ не существует. К тому же автор убежден, снова таки ошибочно, что якобы консольные приложения можно писать только под UNIX, а если Windows, то исключительно GUI. Ну и напоследок С++ он называет "узкоспециализированным инструментом". Да уж, Страуструп был бы в ударе, равно как и тысячи других программеров по всему миру, использующих С++ для геймдева, разработки драйверов, утилит, СУБД, коммерческих систем, ERP, программирования микроконтроллеров и встроенных систем, суперкомпьютеров, научных вычислений и т.д. и т.п. P.S. Хотя в целом подход и философия автора в обучению программированию (восходящий от низкоуровневых основ) мне импонируют.
Обоснован чем, личным пристрастием и предубежденностью?
Он вообще обоснован, а не "потому что так повелось". Можно не согласиться с его аргументами, но они хотя бы есть и на мой взгляд технические, а не эмоциональные.
Цитата:
Сам автор в книге пишет, что можно было бы использовать и С++ вместо Паскаля, но, видите ли, его смущает STL, как будто без STL-a С++ не существует.
ЕМНИП это был далеко не единственный, а самое главное не основной аргумент.
Цитата:
К тому же автор убежден, снова таки ошибочно, что якобы консольные приложения можно писать только под UNIX, а если Windows, то исключительно GUI.
Теоретически конечно можно. Но с практической точки работать с консолью и консольными приложениями в винде это сущий ад по сравнению с линуксом.
В том то и дело, что наличие STL в С++ был его единственным аргументом в пользу выбора Паскаля (по крайней мере так он пишет в предисловии).
Не он это пишет, а ты смог только это понять. Огромная разница.
iptcpudp37 писал(а):
ага, и еще он считает, что тру программеры должны использовать исключительно командную строку, а иначе ты безнадежен )
И снова мимо, речь шла совсем о другом. Забавно, там всего несколько страниц текста с подробной логичной аргументацией, а люди не способны даже это осилить. Выхватывают из текста лишь отдельные куски, смутно им что-то напоминающие. Деградация.
angramania прав.
У Столярова позиция, что Си и соответственно Си++ построены так, что писать на них без побочных эффектов невозможно и давать их как первые языки программирования - очень вредно. И всё.
Это не значит, что на них вообще писать нельзя.
Это значит, что с них нельзя начинать обучение программированию, а лучшим языком в роли первого языка является Паскаль. И слазить с него нельзя вплоть до того момента, пока обучаемый не станет с указателями на ты. Вот после этого уже можно в Си.
P.S. Лучше взять и почитать что там Столяров пишет от первой книги до четвёртой, а не формировать "своё мнение" на основании "своего мнения" разного рода "экспертов" с Опеннета, Лора и Хабра.
О великий и могучий! Пара букоф, и смешно, и в тему. =) Можно я тоже тут чуток свою лепту про Паскаль внесу... Сложилось так, что я начал с бейсиков на старых машинах, потом на Паскаль лет в 13 перешёл, потом уже после института переходил на С.
Причина была проста - я с трудом в нашей "деревне" тогда нашёл хотя бы эту единственную книжку (про Паскаль на английском) по языку программирования.
Причём она оказалась достаточно простой и понятной даже ребёнку самоучке в 13 лет.
Если бы не случилось этого нещастя, я бы про паскаль не знал, и был бы рад, т.к. всё профессиональное всегда писалось на сях. Т.е. на Паскале (+ASM) и дельфях довольно долго сидел, и переучиваться на С++ было тяжко, кстати.
В универе мой поток тогда учили тоже Паскалю.
Следующий поток - на плюсах уже с первого курса. Им было проще, т.к. не надо было голову ломать с двумя непохожими языками.
Программы в универах и сами преподаватели - это, вообще, крааайне редко про учение.
Они такие потому что бюрократы рулят, а преподают либо молодые троечники, оставшиеся в ВУЗе, либо престарелые профессора, оставшиеся в прошлой эпохе.
В РФ ЗП в ВУЗе низкая, а деятельность - бодание с бумажной системой и идиотами в ректорате и министерствах, кому разумному оно надо. Чего-то великого в Паскале нет.
Многие вещи в синтаксисе явно слабые, например, тот же begin и end просто для того, чтобы сделать блок утверждений.
Если бы не простота при построении простых гуёв в дельфях, то Паскаль уже не нужен был бы от слова совсем.
VCL в моей памяти остался как самый комфортный гуи-фреймворк. Конечно же, если не пытаться сделать уникальный интерфейс. --------------------------------
С плюсами всегда была проблема с гуйнёй. Всё какое-то кривое и зубодробительное.
Наверное, только с появлением шарпа, под виндой стало получше с гуи. QT тоже так себе панацея.
Под линуксовый зоопарк гуи не рисовал, но судя по тому, что другие родят - тоже там так себе.
Ну и вечная анархия там ничего хорошего не даст.
А в древний страшный POSIX гуи как-то не завозили.
Поэтому и популярный стал ущербный JS, т.к. хоть как-то закрыл нишу с гуями. Сейчас, если пишу код, то на Java, обычно - пишем на ней всё:
+ скрипты для просто запуска по энтеру и для консоли соотв.
+ гуйню, достаточно приличную на вид и кросс-платформенную при этом.
+ сервера свои, сервисы для томката.
+ библиотеки в виде jar - идут для декомпозиции софта и для передачи в другие конторы, причём ещё и под андроидом работают так же.
+ собсно софт для андроида, пока котлином ещё не задушили.
Легко подтянуть dll-ки и so-шники через JNI, если сильно надо, свои или чужие dll-ки обернуть.
Аннотации и т.п. моднявость, разрушающую ООП - шлём лесом.
Спека на JVM - оч. крута своей продуманностью, не идеальна, но оч. сильное инженерное решение. Питон и т.д. даже рядом не ползает.
JRE, т.е. набор стандартных классов в Java - по большей части, хрень собачья, и это отталкивает начинающих,
т.к. от Питона код-манки гораздо быстрее и проще получит то, что ему надо вот прям щаз.
-------------------------------- Не вижу смысла тратить время обучаемого на синтаксис, который не нужен.
Понятия и концепции языка, построенного поверх процессора, объяснять и показывать можно на ASM-е и C.
Очень хорошо понимаются стек, регистры, указатели, на примере программы на С/С++, запущенной под отладчиком в студии
с тыканьем пальцем в окошки с памятью, регистрами, стеком возврата.
Закрывал этот пробел у программистов не раз именно этим способом. А для того, чтобы начать кодить и писать хоть какие-то программы, можно взять хоть питон, хоть джаву, без объяснений всех тонкостей нижнего уровня.
Так же, как раньше начинали с бейсиков.
Причём спускаться с "интерпретируемых" языков (с JIT уже и не совсем интерпретируемых) реально мало кому надо будет.
На плюсах мучаемся, т.к. историческое наследие оно. И теперь низкоуровневый язык сделать приличный - никто за это не заплатит,
и уж тем более никто не будет переписывать кучу г-кода с си на что-то новое, а ещё много людей привыкают к одному языку и переучивать их -
проще пристрелить. Подавляющее большинство программистов, буржуев, индусов и т.п. - работают как код-манки, практически ничего не осознавая.
Практика показала, что этого достаточно, чтобы толпой слепить кусок чего-то более-менее работающего.
"Идеальный" код не пишут, т.к. не умеют, не хотят, не требуется бизнес-моделями.
Манагеры продают фуфло, слепленное быстро.
Медленно и качественно - отторгнуто современным рынком.
---------------------------------- Более того, для реально хорошего осознания, нужно когда-то (не обязательно в первые годы работы с кодом),
написать свой компилятор и интерпретатор. ----------------------------------
Но Андрею, в любом случае, очередной респект от меня, т.к. других умных русских авторов про код я даже не знаю.
Т.е. кибенематика вот прям настолько у нас деградировала...
Это не значит, что на них вообще писать нельзя.
Это значит, что с них нельзя начинать обучение программированию, а лучшим языком в роли первого языка является Паскаль. И слазить с него нельзя вплоть до того момента, пока обучаемый не станет с указателями на ты. Вот после этого уже можно в Си.
Скажите это преподавателям и студентам западных университетов, у которых вводные курсы по программированию читаются на С/С++, Java, Python и Scala, а о Паскале как о ЯП многие там даже не слыхали. Вот уж действительно хиленькие потом у них программеры выходят, не то что у нас эксперты.
digrol писал(а):
Чего-то великого в Паскале нет.
Многие вещи в синтаксисе явно слабые, тот же begin и end просто для того, чтобы сделать блок утверждений.
Если бы не простота при построении простых гуёв в дельфях, то Паскаль уже не нужен был бы от слова совсем.
VCL в моей памяти остался как самый комфортный гуи-фреймворк. Конечно же, если не пытаться сделать уникальный интерфейс. Не вижу смысла тратить время обучаемого на синтаксис, который не нужен.
Понятия и концепции языка, построенного поверх процессора, объяснять и показывать можно на ASM-е и C.
Очень хорошо понимаются стек, регистры, указатели, на примере программы на С/С++, запущенной под отладчиком в студии
с тыканьем пальцем в окошки с памятью, регистрами, стеком возврата.
Закрывал этот пробел у программистов не раз именно этим способом. А для того, чтобы начать кодить и писать хоть какие-то программы, можно взять хоть питон, хоть джаву, без объяснений всех тонкостей нижнего уровня.
Так же, как раньше начинали с бейсиков.
Причём спускаться с "интерпретируемых" языков (с JIT уже и не совсем интерпретируемых) реально мало кому надо будет.
На плюсах мучаемся, т.к. историческое .
Аминь. Всеми руками и ногами за! Я сам программирование начинал с С учить, и вообще не пойму какие там проблемы с пониманием указателей и адресной арифметики. То, что наши отечественные преподаватели "зависли" на Паскале это, наверное, менталитет такой - совковое ретроградство что-ли...
79572892Скажите это преподавателям и студентам западных университетов, у которых вводные курсы по программированию читаются на С/С++, Java, Python и Scala, а о Паскале как о ЯП многие там даже не слыхали. Вот уж действительно хиленькие потом у них программеры выходят, не то что у нас эксперты. Аминь. Всеми руками и ногами за! Я сам программирование начинал с С учить, и вообще не пойму какие там проблемы с пониманием указателей и адресной арифметики. То, что наши отечественные преподаватели "зависли" на Паскале это, наверное, менталитет такой - совковое ретроградство что-ли...
Скажу, эти выпускники гарвардов и хогвартсов поустраиваются в мелкомягкие фирмы и пишут всё то, что вылетает с BSOD.
Причём здесь "совок", в дурдом интернет провели?
На этом я сливаюсь, вижу вы ведёте холивар ради холивара, а не отстаиваете позицию, потому что у вас этой позиции нет.
Ну могу лишь еще раз повторить: "Выхватывают из текста лишь отдельные куски, смутно им что-то напоминающие.". Ты пропустил то, что было написано про C++ на предыдущих страницах. Аргументы в предисловии выстроены в логическую цепочку, а не идут просто списком типа "10 причин учить эту фигню" как делает большинство сейчас.
Цитата:
Скажите это преподавателям и студентам западных университетов, у которых вводные курсы по программированию читаются на С/С++, Java, Python и Scala, а о Паскале как о ЯП многие там даже не слыхали. Вот уж действительно хиленькие потом у них программеры выходят, не то что у нас эксперты.
Ну после наших любителей трупопаскаля тоже хорошие программисты получаются, только это ни разу не их заслуга. Так что не аргумент.
Цитата:
То, что наши отечественные преподаватели "зависли" на Паскале это, наверное, менталитет такой - совковое ретроградство что-ли...
Так называемые "совки" сделали учебные программы, использовав самый подходящий язык из тех, что был в то время. А вот "несовки" с тех пор ничего своего создать не смогли, вместо этого уже четверть века насилуют труп.
Но ретрограды у дурачков конечно "совки", а не продукты эпохи капитализма.
Цитата:
С плюсами всегда была проблема с гуйнёй.
Кроме Delphi был еще C++ Builder от того же Borland.
Цитата:
Чего-то великого в Паскале нет.
Конечно, осталось только узнать, с кем ты по этому поводу споришь.
Цитата:
Многие вещи в синтаксисе явно слабые, например, тот же begin и end просто для того, чтобы сделать блок утверждений.
Становится понятно, почему от Си "сбежать" не возможно, по крайней мере на *nix. И почему знание ОС во многом определяет квалификацию программиста.
Если хотим быть хорошими разработчиками все это необходимо, не говорю неплохо бы знать, а именно - необходимость!
А вот это то, в чем я с автором категорически не согласен. Увы, но практика показывает, что знание С и вообще низкого уровня плохо помогает писать программы на других языках, а зачастую даже мешает.
Хорошему программисту настоятельно рекомендуется изучить несколько языков с разными парадигмами и С лишь один из них.
У него есть книжка именно по плюсам, где говорится что С++ изуродовали комитеты своими этими STL
и в той книжке он учит именно правильным плюсам, без высокоуровневой ерунды.