LINUX.ORG.RU

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

 , ,


24

11

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

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

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

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

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

★★★

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

Аффтар дебил штоле?? Как можно учить АЗАМ на системе, которую даже программеры - и те не сразу осваивают?!!!!! Ну точно прожжёный линупсоид, решивший на халявных материалах подзаработать!

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

напугал

Напугало не само наличие библиотеки и даже не её код. Блогера «напугало» то, что автор библиотеки серьёзно считает, что это кто-то будет использовать.

писал это всё не зря

Магистерскую же защитил? Значит уже не зря.

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

Я тоже часто пишу в одиночку и всегда использую git для этого. Git тоже можно запустить из под эмулятора. Результаты работы всегда сливаю на другой комп с помощью git pull. От ошибок git не защищает, он лишь упрощает работу с кодом.

Круто наверно править конфиги сливая все изменения в гит! Надо исправить _один_ файл несколько раз - заводите гит, привыкайте к хорошему. Упрощение работы с файлом на лицо.

Уважаемый Napilnik Ваши выпады даже до троллоло не дотягивают.

Какие выпады? Не пытайтесь замаскировать свой слив выдуманной атакой троллей.

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

Что за бред школьника я сейчас прочитал?

Какие буквы тебе не понятны?

В /dev/null, очевидно.

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

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

В течении семестра - автоматизированное тестирование принимаемых задач

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

grem ★★★★★
()
Ответ на: бида с этими О от anonymous

никакой биды тута нету. Ваша m=f(n) как ведёт себя при n-->infinity ?

Очевидно, что она ограничена сверху какой-то константой (обращение к памяти в любом случае не может продолжаться бесконечно долго), т.е. это опять всё то-же O(const*n) = const*O(n) = O(n)

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

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

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

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

Именно, человек начинает считать себя программистом, когда, как писал автор в разделе «отладка», может скомпилировать код.

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

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

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

Про отладку:

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

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

Те, кто УЖЕ пишет код по описанному принципу, не станет хорошим программистом никогда, у него нет такой предрасположенности. Поэтому задача главы - не исправить совсем ужасных учеников, а показать прочим ученикам, в том числе на примере их менее удачливых коллег, как отлаживать и тестировать код. К этому времени, я уверен, прилежные ученики уже и сами имеют опыт тестирования и отладки, и задача учителя лишь дать им подсказки.

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

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

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

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

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

+1

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

А «учить джаваскрипту» бессмысленно. Учить надо программированию.

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

Настройка git:

Юнит тест аналогично:

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

Автор вообще-то заставляет читателя установить себе линукс

Что тоже не есть хорошо.

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

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

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

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

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

Почему же нет пользы? Например, реализация hash map в Glib, чтобы не писать свою каждый раз.

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

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

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

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

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

А вот чтобы на ассемблере кто-нибудь не поленился сделать менеджер кучи, написать аналоги malloc/free и начать со списками развлекаться — такого я ещё не видел.

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

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

>Ты что, предлагаешь каждый раз для нового типа данных с нуля реализовывать списки/динамические массивы?

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

Поясните свою точку зрения, плиз.

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

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

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

Была бы ночь в пионерлагере, если бы я сдающего не пытался убедить объяснить ему как написать нормальный вариант, но он упорно просил именно тот, который в итоге сдал.

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

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

Ну и я, когда-то писал игрушечную ОС на asm :) и что? Из этого следует что это просто?

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

я преподаю на втором курсе ВМК МГУ, и как раз учу студентов этому вашему Си, и делаю это вот уже 16 лет

Хотите сказать, что в 2011-2012 году на первом курсе ВМК не было первый год C? Первые полгода C, вторые полгода архитектура ЭВМ и язык ассемблера.

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

Несколько лет назад на ВМК на одном из трёх потоков начался эксперимент по внедрению новой программы. Надо отдать должное авторам эксперимента, гнилой труп MS-DOS они из учебного процесса устранили, но, к сожалению, вместе с откровенной мертвечиной экспе- риментаторы выкинули и язык Паскаль, начиная обучение прямо с Си. Это было бы вполне нормально, если бы все поступающие на первый курс абитуриенты имели хотя бы зачаточный опыт программирования: для человека, уже видевшего указатели, Си не представляет особых сложностей. Увы, даже ЕГЭ по информатике не может обеспечить наличие хотя бы самых примитивных навыков программирования у поступающих: сдать его на положительный балл вполне можно, совер- шенно не умея программировать, не говоря уже о том, что указатели в школьную программу информатики (и, соответственно, программу ЕГЭ) не входят. Большинство первокурсников приходят на факультет с абсолютно нулевым уровнем понимания, что такое программирование и как это всё выглядит; Си становится для них первым в жизни языком программирования, а на выходе мы получаем откровенную катастрофу.

anonymous
()

Так, товарищи

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

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

так всё по Марксу: от «коммунизма» к «каннибализму», от «каннибализма» к «коммунизму» и так далее - форма меняется, но суть общего цикла остаётся

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

а на выходе мы получаем откровенную катастрофу.

Это почему же? Я довелось попасть именно на эту программу, и скажу честно, считаю, что мне дичайше повезло. К сожалению из-за матана мне не удалось перейти на второй курс, пришлось перепоступить в другой ВУЗ, но полгода изучения C в МГУ дали мне больше, чем год Паскаля в другом ВУЗе.

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

suiseiseki_desu
()

Не менее часто встречается и другой вариант: учить пытаются, судя по всему, чистому Си (тому, который без плюсов), то есть не рассказывают ни классы, ни контейнеры, ни STL (что, в общем, правильно), ни ссылки, но при этом невесть откуда выскакивают cin/cout, тип bool (которого в чистом Си отродясь не было), строчные комментарии и прочие примочки из Си++.

Вообще-то в Си есть и тип bool (stdbool.h), и строчные комментарии (C99).

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

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

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

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

К сожалению из-за матана мне не удалось перейти на второй курс

в ВУЗы поступают дети-аутисты из церковно-приходских школ, не способные удержать в голове хотя бы пару фактов и связать их логикой

nuff said

Но тогда почему именно Паскаль, а не, скажем, Питон?

стр. 21-24

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

но полгода изучения C в МГУ дали мне больше, чем год Паскаля в другом ВУЗе.

типичный говнокодер

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

Ну уж матан в МГУ в разы сложнее программирования.

По своим одногруппникам могу сказать, что всё с точностью до наоборот. С математикой ни у кого проблем не было, а с программированием было.

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

То есть по твоим словам получается, что даже такой аутист как я, не имеющий никаких способностей, смог освоить МГУшную программу с C? А вы говорите «C это сложно, C не подходит для новичков». Еще один плюс к обучению C.

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

можете оставить свои фантазии

Только после Вас.

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

оценки О большое

Ты совершенно не понимаешь сути О. О определяет *масшатбируемость* алгоритма с ростом «размера» входных данных. Детали реализации не меняют вывода о том, линейный алгоритм, квадратичный или какой-то ещё.

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

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

Я вам сочувствую.

Учить студента, начиная с гита --- полное безумие

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

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

Вы git и тесты относите к магии? Так же тупо как магией называть С++ и считать, что при изучении C++ надо на первом уроке вдалбливать про шаблоны.

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

Вообще-то в Си есть и тип bool (stdbool.h), и строчные комментарии (C99).

Чистый С это имеется введу тот что в borland под DOS. А что такое стандарты?

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

Вы git и тесты относите к магии?

Сударь, для студента первого курса даже цикл --- это почти магия. Потому что он не понимает, как можно написать 2 строки, а они будут выдавать много чисел, да ещё и разных в зависимости от вашего ввода. И if он не может написать без else, т.к. у него в голове почему-то не укладывается концепция молчаливого перехода к следующему оператору.

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

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

Автор вообще-то заставляет читателя установить себе линукс

Что тоже не есть хорошо.

Если с гуем и кучей установленных прог, которые рандомом подтянут по зависимостям нужности, то не плохо. Плохо, если читатель решит, что настоящий линукс, это прошивка для роутера с башем вместо окошек и утилитами, которые в сложной ситуации ни диск починить не могут, ни груб на NTFS раздел поставить, только время тупо жрут, потому что в урезанной безгуевой среде данная ФС просто не поддерживается:)

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

Чистый С это имеется введу тот что в borland под DOS. А что такое стандарты?

Автор выступает против стандартов, что я не поддерживаю, но это мои проблемы.

А вот касается буля в C --- это важный вопрос. Какой тип возвращает любой оператор сравнения?

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

Не ясно, почему вы этого не понимаете.

Студенты не понимают циклы, а вот этот товарищ основ педагогики.

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

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

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

Я вот поступал в универ, экзамен по физике был что-то на уровне запомни какой буквой, что обозначается. Что-то чуть сложнее этого, сказано скорость 10 км/ч, самокат ехал 10 часов, сколько км он проехал? Зная что «Км» это L, а «ч» это «t» а скорость это «V», выводишь формулу из размерности, что V=L/t после чего пишешь это, считаешь результат и сдаешь. Вот реально часто теории не знал когда поступал (девушки, пиво ну вы поняли), но написал физику на 5. Может в МГУ так-же берут?

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

Ну вот - Си проблем не вызывает, а Паскаль вызывает. ЧТД.
(Ты же про первый курс говоришь, да?)

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

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