LINUX.ORG.RU

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

 , ,


24

11

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

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

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

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

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

★★★

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

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

Мне, например, много раз встречались случаи категорической невозможности объяснить человеку, что такое вложенные циклы. Вот не понимают, и точка. 3-4 занятия целиком на это убиваешь, сначала пытаешься рисовать блок-схемы, потом всякие «закольцованные» дороги, по которым машинки ездят, а на обочине стоят щиты с надписями, что делать. И много чего ещё пробуешь. Хрена лысого. Как в стену. Ну то есть вообще бесполезно, не работает. Мы это называем алгоритмическим кретинизмом.

Если бы Моцарт и Цветаева были бы твоими учениками, они бы у тебя были бы настоящими «алгоритмическими кретинами». Тот 1 человек из 20-цати, которого ты воспеваешь, в другой области человеческой деятельности вполне может оказатся полным «кретином».

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

но вот вЕндузятником (как, впрочем, и виндузятником) меня ещё не называли.

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

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

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

Зря вы так это называете. /me пытался учить C++ по книге Страуструпа.

Я уж точно не ЭТО называю алгоритмическим кретинизмом.

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

А если показать в отладчике по шагам весь алгоритм? Если человек уведет как меняются значение регистров и стек, то разве не станет всё понятно, итерации с 3-тий наверняка уже сами будут говорить что где изменится.

Не факт, я вот иногда такое практиковал, но не всегда помогало. Люди не всегда понимают что такое переменная! Это нужно объяснять, и не всегда получается :(( Люди не понимают что программа выполняется последовательно (ветвление пока опустим), воспринимают ее как набор формул! Ну например, на Паскале

 b:=a + 1;
 a:=1;


Говорят, ну я же написал а равно (да именно равно!) 1. Не понимают, что порядок операторов имеет значение.
anonymous
()
Ответ на: комментарий от sloan

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

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

Между прочим первая версия компилятора gcc была написана на Паскале. Не было бы Паскаля не было бы колекции компиляторов gcc.

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

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

И не подумаю. Просто потому что Паскаль я не рассматриваю и никогда не рассматривал как инструмент для «боевого» программирования, и, как следствие, не считаю нужным измерять его «полезность» тем, применяется он часто или редко. Ну то есть вообще-то он применяется, я тут эпичный случай нарыл — TorChat, первая версия была на питоне, а вторую автор решил написать from scratch таки да, на Free Pascal. Но это не имеет никакого отношения к обсуждаемому предмету, первым языком я бы выбрал Паскаль, даже если бы его вообще нигде никто не применял и пришлось бы самому писать для него компилятор.

Если говорить о «социально значимых» и т.п. проектах, то безусловный лидер у нас plain C. Надо ж такому случиться, я всю жизнь (ну, последние 16 лет таковой) преподаю как раз Си. Считал и считаю его изучение обязательным, пока не появилось замены (а она не факт, что вообще когда-то появится). И во втором томе обсуждаемой книги сначала будет ассемблер (NASM/i386), а потом, не поверите, Си. Сейчас эта часть тянет на 268 сттаниц, то есть заметно больше, чем паскалевская часть в уже вышедшем томе. Представляете, какая неприятность?

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

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

Если бы Моцарт и Цветаева были бы твоими учениками, они бы у тебя были бы настоящими «алгоритмическими кретинами».

Не факт, но вполне возможно. И что? А у меня вот, например, полнейший, как это называется, «изобразительный кретинизм» (возможно, у художников есть свой термин на это) — в том смысле, что меня невозможно научить рисовать. Ну так я рисовать и не пытаюсь.

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

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

коль скоро Вы «готовите» профессионалов может имеет смысл опереться на индустриальные стандарты и реальные перспективы в бизнесе?

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

пс: это не вопрос и не совет, а для обозначить свой взгляд и уйти от троллинга

ппс: и да, я осознаю, что свой бесценный опыт и творческий подход в РФ важнее бизнеса и практики, те такие как Вы этого не могут

/остается надеяться на смену поколений (мы примерно одного возраста еслиф-чо :) )

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

Да, моя цель именно такова. Я принципиальный идейный эгоист.

Если бы ты был принципиальным, то не выложил бы свою книжку в открытый доступ вообще, а продавал только бумажные экземпляры, рублей по 600, с отправкой первой партии донаторам.

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

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

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

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

PS: Анонимность в сети, при наличие хотя бы пары извилин, достигается 100%.

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

Я думаю, и на C++ можно проложить такой же путь, хоть и посложнее.

Нельзя. Невозможно новичку объяснить, почему одни возможности (cin/cout) использовать разрешается, а другие (vector/list) почему-то запрещены. Реакция на такой запрет будет «препод козёл». В лицо, конечно, не скажут, но подумают именно так.

А если vector/list уже есть, то всё, точка невозврата пройдена, путь к проблемно-ориентированным структурам данных закрыт.

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

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

а может нам нужен человек адекватный и системно подготовленный?

почему бы не учить сразу на Си, оставьте при себе

этого ни разу не говорил и, собственно, так тоже не считаю

еще раз: меня очень волнует массовая самодеятельность и претензии на оригинальность среди преподавателей ВУЗов

это, в итоге, приводит к бессистемной подготовке и слабой ориентации выпускников

и Вы тому - типичный и ярчайший пример, увы

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

пытался учить C++ по книге Страуструпа

В первый раз я прочитал первую главу и ничего не понял... Через неделю еще раз прочитал первую главу и тоже ничего не понял

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

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

коль скоро Вы «готовите» профессионалов может имеет смысл опереться на индустриальные стандарты и реальные перспективы в бизнесе?

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

И на выходе я хочу видеть не «профессионала», а такого человека, который понимает, что правильно, а что неправильно, вне зависимости от того, как это делается в индустрии (при том что в индустрии почти всё делается неправильно).

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

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

Остальной текст вашего поста я не смог распарсить, пардон.

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

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

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

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

Не люблю бросаться ссылками на книги, но уж коли вы поделились ссылкой и я дам свой совет, почитайте «The Cucumber Book» Behaviour-Driven Development for Testers and Developers Книга для людей нифига не понимающих в программировании, но сразу ставить их на путь истинный.

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

приводит к бессистемной подготовке и слабой ориентации выпускников

В данном случае автор демонстрирует системный подход: от простого к сложному.

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

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

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

Вот, например, Фабрис Беллар написал эмулятор x86 архитектуры на JavaScript. Теперь можно сидеть в linux прямо из firefox с включённым JS. Круто, весело, удобно.

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

За обучение веб-программированию надо расстреливать сразу же

Вы излишне категоричны (почему и назвал Вас упоротым)

опираясь на стандарты никто не мешает составить нужный роадмап

она состоит из идиотизмов чуть менее чем полностью

это так, но это не повод считать себя выше реальности

И мне индустрия не указ.

тваюмать, мне надоело быть правым.

и к Вам более нет вопросов.

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

И отчислится с первого курса?

Сейчас на первом курсе на IT-специальностях в некоторых ВУЗах СПб проходят работу в MS Word и Excel, на втором видимо начнут проходить Pascal. Пока в ВУЗах работают такие замшелые преподаватели фанаты Pascal, вроде этого Croco, улучшений ждать не приходится, ещё и не такой декаданс нас ждёт впереди.

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

Если бы ты был принципиальным, то не выложил бы свою книжку в открытый доступ вообще, а продавал только бумажные экземпляры, рублей по 600, с отправкой первой партии донаторам.

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

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

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

Мне более-менее пофигу, что будет, когда я сам кану в небытие. Но до этого прекрасного момента есть ещё некоторое количество времени, которое меня, как ни странно, волнует. Ибо я всё меряю не мерками какой-то там вселенной, а исключительно мерками себя, любимого. И в этом плане деньги за книжку меня не $$ут, а вот сопутствующие приятности вроде авторства, популярности и т.п. — это как раз то, ради чего я вообще эту книжку писал. Вот такая вот загогулина.

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

тк я не понимаю сколько анонимусов мне пишет, то отвечу единственный раз:

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

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

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

Он новичек в программировании? :))

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

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

опираясь на стандарты

Современная техническая стандартизация представляет собой особый (и особо опасный) вид международного терроризма. От ISO вреда больше, чем от ИГИЛ (и если про последнее всегда пишут, что оно запрещено в России, то ISO и прочие стандартизационные комитеты тоже должны быть как минимум запрещены).

считать себя выше реальности

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

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

представьте, что вы пришли учиться на хирурга, а препод занимается тем, что изучает фолиант знахаря Евпатия от 1893 г.

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

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

Т.е. предлагаете сразу студента поставить на операцию?

Нет предлагают сразу учить C++ - то что будет использоваться в повседневной реальной работе, знаете, вы мне напоминаете фанатов Python с opennet.ru, эти кадры тоже постоянно ссылаются на какую то мифическую сложность C++.

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

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

Реальность и индустрия — это две большие разницы.

Индустрия - это и есть реальность.

Меня всегда до глубины души поражала легкость с которой ЮЗЕРЫ чужой индустрии критикуют ДЕВЕЛОПЕРОВ этой индустрии.

И глобальная проблема в том, что при продолжении таких, как Вы устраиваете, танцев с ЧУЖИМИ бубнами, не появится ни системная микроэлектроника, ни системная школа программирования в РФ.

всё что Вы и такие как Вы делают, это внимательно читают ЧУЖИЕ исторические подходы, но почему-то сразу начинают мнить себя не менее, чем новаторами. НА ОСНОВАНИИ ЧЕГО?

Реальность сиречь Индустрия формируется совершенно не Вами. Вы обязаны не более, чем подготовить новых ЮЗЕРОВ. Пора бы уже понять. Но как же - эго распухло и ничего низги :)

/ой_вэй

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

Именно! Занимаемся отладкой на не тестированием (запуском программы с набиванием вручную нужных значений). А в дальнейшем этот юнит тест вам гарантирует, что этот фрагмент работает так, как вы хотите.

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

кто и когда залез своими грязными ручками и сломал работу этого фрагмента.

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

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

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

В книге Дейтелов очень доступное изложение C++, а Страуструп не учитель вовсе.

Не, тут вопрос в том, что «объяснил доступно»/«объяснил недоступно» - это субъективное индивидуальное восприятие. Может быть кому-то и понятен Страуструп с самого начала (хотя таких еще не встречал :) ). А может быть кому-то объяснение у Дейтелов кажется непонятным. Вообще принципиальной разницы между ситуациями «за 4 занятия не смог объяснить циклы» и «4 главы пытался понять классы по объяснениям Страуструпа» быть не должно... Конечно при желании преподавателя объяснить материал и при желании студента понять материал.

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

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

Нет предлагают сразу учить C++ - то что будет использоваться в повседневной реальной работе

Т.е. предлагаете сразу ставить на операции. Надеюсь Вы никогда не попадете к такому херургу.

А почему именно С++, а не, скажем С, Python, JS и т.д.?

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

индустриальные стандарты и реальные перспективы в бизнесе

Продакшен, продакшен. Помойка, этот ваш продакшен. У вас сегодня одно модно, завтра другое. Тут одни php кодеры 3 раза свою систему перепиливали из-за смены фреймворка. Вот тебе и вся суть продакшена. Поддержка закончилась, пришло время всё переделывать. Макаки в unixway не могут. А могут они писать только на том, что модно и как модно. Продакшену не нужно ничего, что в этой книги описано. Нужно выполнить задачу, а как это будет реализовано мало кого волнует, лишь бы работало и были макаки, которые это поддерживают.

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

Нет предлагают сразу учить C++ - то что будет использоваться в повседневной реальной работе, знаете, вы мне напоминаете фанатов Python с opennet.ru, эти кадры тоже постоянно ссылаются на какую то мифическую сложность C++.

C++ как вы знаете, имеет зашкаливающее количество нелогичных вещей, граблей и неточностей. Если хотите научить человека программировать на C++ надо сразу его ставить в очень жёсткие рамки. А то начинают делать func(a(),b()) под try, наследовать STL и прочее с учётом C специфики типа (uint32_t)1<<34 . С python, ruby и тп таких проблем значительно меньше, работать почти всегда будет так, как ты думаешь, а не так, как это сделано из-за внутренней архитектуры...

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

В питоне указателей нет. А Си в дальнейшем обучении неизбежен, если мы не хотим на выходе получить макаку. Но для Си нужны указатели — то есть чтобы человек их УЖЕ умел.

Сам веду Паскаль с 1 курса по причинам, изложенным вами в вашей брошюре 2010 года (анти_с). Однако есть 3 причины перейти на Питон и этот переход произойдёт рано или поздно.

  1. Питон проще в освоении.
  2. Он очень универсален и можно делать на нём почти все вещи кроме системного программирования и встраиваемых устройств.
  3. Востребованность и популярность Питона создаёт у студентов положительную мотивацию, а Паскаль --- наоборот отрицательную.

Дело в том, что я обучаю непрофессиональных программистов (специальности такие: биотехнические системы, электроника, материаловедение, управление качеством, физика, инноватика). Хотя многие мои студенты сейчас стали веб-программистами, сисадминами или даже программистами на Яве, для большинства программирование --- дополнительный инструмент для решения их повседневных задач. Для инженеров, физиков, логистов, учёных, снабженцев, которых мы готовим нет возможности давать программирование в том объёме, как это принято у вас на ВМК, потому что это вспомогательная дисциплина. Более того, большинство из них, кроме тех, кто программирует потом встраиваемые устройства (отдельный трёхсеместровый курс в магистратуре с вводным курсом по Си), вообще нет смысла использовать языки с явным обращением к указателям. Это не значит, что они не должны знать представление чисел в компьютере или различие между простыми и ссылочными типами, но явная работа с указателями им не нужна, а сборщик мусора никак не повредит.

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

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

Именно он не рассказал про документацию кода, именно он не заставил написать юнит тесты, именно он не научил сохранять код в git. Иными словами он довёл студентов до состояния, что они тратят кучу времени на отладку.

Нельзя учить человека всему сразу. Область знаний в программировании для этого слишком обширна. Если на первокурсника сразу вывалить командную строку, vim/emacs, make, git, gdb, юнит-тесты, документирование, отступы, да ещё и начать вводить сложные концепции вроде указателей или объектов, у него сразу будет переполнение памяти и 12309. Тем более, как это вообще сделать в книге, которая подразумевает линейное изложение? Если начать со всей этой сопутствующей инфраструктуры, а не с программирования, эту книгу будут читать только те, кто уже умеет программировать.

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

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

Единственное с чем можно согласиться, так это с 3-м пунктом. FreePascal работает на обоих платформах.

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

Нет предлагают сразу учить C++ - то что будет использоваться в повседневной реальной работе, знаете, вы мне напоминаете фанатов Python с opennet.ru, эти кадры тоже постоянно ссылаются на какую то мифическую сложность C++.

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

Типичное заблуждение, для промышленного применения программы на pascal получаются быстрее и дешевле в силу большей детерминированности и ограниченности самого языка. C{,++,#}, Python и прочие привлекают синтаксическим сахаром - первые мухи давно утонули в кучах, но все новые продолжают слетаться вязнуть и тонуть. Кучи растут - «ракеты падают».

Поэтому продолжаю настаивать, что лучше учить в такой последовательности perl(bash) -> pascal,c{,+..} -> assembler -> pascal,c{,+..} -> perl -> bash

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

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

всё это так. очень хорошая причина, почему книга «ненужна» :)

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

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

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

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

Автор вообще-то заставляет читателя установить себе линукс, причём не в VirtualBox, или тупо запустить в firefox, а найти для него отдельный комп. К этим развлечением настройка git будет занимать чуть менее чем 1% от всего времени:

Настройка git:

  • apt-get install git
  • git init .
  • git add <имя файла>
  • git commit

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

inputdata[]={...};
outputdata[]={...};
resultdata[xxx];
TestFunc(&resultdata);
if (memcmp(outputdata,resultdata,sizeof(outputdata))==0) return 0;
return 1;
ASM ★★
()
Ответ на: комментарий от Esteban_Garcia

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

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

Нет предлагают сразу учить C++

Вообще-то учить надо программированию. А C++, Паскаль или Scala - это в данном случае инструмент. Поминаемого всуе хирурга никто не поставит к столу пока он не изучит анатомию и физиологию. И таки да: хирургу-ортопеду будут втюхивать строение сердечно-сосудистой системы.

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

Автор вообще-то заставляет читателя установить себе линукс, причём не в VirtualBox, или тупо запустить в firefox, а найти для него отдельный комп. К этим развлечением настройка git будет занимать чуть менее чем 1% от всего времени:

Настройка git:

apt-get install git git init . git add <имя файла> git commit

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

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

Ну тупая инструкция:

Создаём файл main.c:

#include <stdio.h>

int program(void) {
 printf("Hello world\n");
 return 10;
}

int main(void) {
  int status;
  status=program();
  assert(status==10);
  return status;
}

запоминаем его в git: git add main.c; git commit -m «моя первая программа»

А дальше на основе этого развиваем программу и тест, не особо зацикливаясь на коде в main(void).

Что тут сложного? Какой факап мозга произойдёт у студента от этого? Но студент будет после выполнения программы буде не только видеть результат 10, но и понимать, что если программа вдруг начнёт выдавать 11, то это будет выловлено автоматически.

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

но и понимать, что если программа вдруг начнёт выдавать 11, то это будет выловлено автоматически.

90% не будут понимать

Вы кого-нибудь пробовали учить с нуля?

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

Вы вообще о чём пишите?

О реальном мире.

Какой архиватор?

Любой распространённый, не вызывающий проблем.

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

Твои «нормальные программы» тоже ограничивают. Во первых, они написаны в том числе и на конских какашках с кучей зависимостей, которыми управляют странные посторонние люди. В один прекрасный момент всё это рискует не запуститься в операционке Х, или не прочитать то, что надо. Во вторых, гит, это тот же архиватор с дополнительными плюшками и кучей замудрёных команд, которые нужно тестить лично перед употреблением - офф. гайды они такие, склонные приукрашивать. И в итоге, пользуясь гитом ты имеешь один архив программы, ну может 2, которые синхронизируются, а значит имеют шанс в какой-то момент окирпичиться и показать автору ПО большой и жирный кукиш. И в третьих, в гип-репозиторий принято заливать готовые версии программ, склонные к компиляции и работе - а куда же складировать промежуточные? И в итоге мы имеем, что необходим и хорошо сжимающий исходники гит с гуёвиной, ограничивающей его функционал проверенным минимумом и куча архивов *.tar.gz в корневом каталоге проекта. Для многих утилит необходимость в гите может просто не успеть возникнуть, а архивов с версиями ПО уже будет не меньше десятка.

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

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

Производственный программист - это склейщик разного до чего рука судорожно дотянулась, успевай только - и молодец!

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

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

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