The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Опубликован третий том общедоступной книги 'Программирование..., opennews (??), 28-Июл-17, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


121. "Опубликован третий том общедоступной книги 'Программирование..."  –2 +/
Сообщение от Orduemail (ok), 29-Июл-17, 09:51 
>> начальным навыкам составления компьютерных программ на примере Free Pascal под ОС
>> Unix.
>
> Вот и сказке конец, а такая была хорошая идея.

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

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

Ответить | Правка | К родителю #19 | Наверх | Cообщить модератору

122. "Опубликован третий том общедоступной книги 'Программирование..."  +/
Сообщение от Orduemail (ok), 29-Июл-17, 15:12 
> Я в тексты не заглядывал...

Заглянул и полистал.

TL;DR

Первый том -- совершенно бесполезный учебник паскаля. Если нет цели изучить паскаль, то туда не стоит даже не заглядывать. Если это будет приводить к проблемам усвоения материалов второго/третьего тома, то надо будет сходить в гугл, найти там какой-нибудь тутор к тому же питону, и освоить там основные концепции, типа циклов.
Второй и третий тома -- отличный ликбез. Не стоит ждать, что эти книги научат алгоритмам или структурам -- они вообще не об этом. Там изложены азы C, libc, и азы устройства *nix систем. Изложены очень поверхностно, но достаточно широко для того, чтобы создать в голове у читателя более-менее полную картинку. Эти два тома -- отличный фундамент, который позволит двигаться дальше. Таким образом, эта книга, лучший из мне известных способов въехать в программирование под *nix. Но, подчеркну, не _стать_*nix-программистом_, а _въехать_ в тему. Обозреть перспективы и сориентироваться в океане информации гугла.

А теперь, по порядку.

Первый весь том посвящён паскалю. Педагогическая цель этого тома -- объяснить абстракции структурного программирования. Таким образом первый том практически бесполезная вещь. Лучше взять и почитать Кернигана и Ритчи, или любой другой пристойный труд посвящённый изложению этих азов на любом живом языке программирования. Это будет гораздо более эффективной тратой времени. Его аргументация в пользу выбора паскаля как первого языка программирования столь же невалидна, как и аргументация проф. Вирта. А уж отсылки к тому, что в какой-то там школе обучают программированию начиная с C++ и ученики не знают, что такое цикл -- это вообще шедевр педагогической аргументации, достойный лучших образцов выступления анонимов в интернете. Я пробовал детям излагать программирование, причём на паскале, C, и на языке специально созданном для обучения самым-самым азам. Более того, я слушал курсы педагогики, психологии развития и общей психологии. Так вот, мой опыт и мои знания сходятся в одном: выбор языка до лампочки, реально же влияет а) то как материал подаётся, насколько учитель понимает, что он излагает; б) мотивация учеников к усвоению материала: знания нельзя положить в чужую голову силой, только владелец головы может чему-нибудь научить свою голову, учитель же (в идеальной ситуации) должен играть роль инструктора, объясняющего как можно справиться с тем или иным материалом. И выбор конкретного языка здесь совершенно до лампочки, до тех пор пока он не мешает ученикам обретать мотивацию (изучать допотопный паскаль в DOS'е? фу), или не мешает учителю показывать те или иные абстракции (функциональное программирование в C? ну-ну). Аргументация же выбора языка вида "с C можно связываться только зная, что такое указатели" -- это явный признак "кухонной" педагогики, типа того, что случается, когда человек выходит за границы своей специализации, когда, например, программист (пускай он при этом хоть трижды профессор и доктор физ-мат наук) начинает рассуждать о том, как надо учить людей не будучи при этом учителем и не прочитав ни одной специализированной книжки, набирая при этом опыт посредством проб и ошибок, вместо консультаций со специалистами.

Второй том уже лучше, он излагает вещи, которые неплохо было бы знать, и он излагает на таких примерах, которые не совсем бесполезны сами по себе. Да, с одной стороны, применимость того же nasm очень узкоспецифична, но всё же, если цель писать законченные программы на ассемблере, без примеси других языков, то nasm -- неплохой выбор. Но второй том -- это опять же изложение базовых-базовых основ. Скажем раздел про структуры данных занимает ~25 страниц, из которых 15 посвящено разбору идиотских академических примеров того, как надо реализовывать никому не нужные односвязные, двусвязные списки и двоичные отсортированные деревья. То есть, нужно знать о таких структурах данных, но знание это не удастся непосредственно и удачно приложить к решению практической проблемы, не проводя отдельного исследования на тему того, что такое структуры данных и каковы алгоритмы их обработки.

Третий том -- это разбор unix'ов прошлого века и libc. Если цель -- первое знакомство с unix, то отличная книга. Если же цели шире, то эту книжку можно полистать, но затем всё равно придётся осваивать info libc (в glibc-based системах, по-крайней мере), и отдельно брать какой-нибудь современный труд посвящённый азам администрирования linux и/или *bsd. Взять и собрать LFS, или там gentoo/arch, на худой конец. На фоне последующих необходимых шагов, непонятно зачем нужен этот третий том, потому что info libc даёт более полный обзор возможностей glibc и POSIX libc, причём info libc можно использовать и как справочное пособие, а не только как учебное. Сборка же LFS даёт более полный обзор устройства linux. И в обоих случаях порог вхождения, чем для этой книги. Ну, разве что английский потребуется, но это даже плюс: можно параллельно освоить английский на уровне уверенного чтения технических текстов, что для программирования может быть даже полезнее, чем знание азов.

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

Таким образом, всё это очень напоминает мне попытку проапгрейдить курсы программирования/архитектуры ПК/ОС, с которыми я сталкивался в наших ВУЗах. Если знаний вообще ноль, и цель исправить этот косяк, то имеет смысл взять второй и третий тома в качестве базы, этого достаточно, чтобы заложить некий фундамент с которого можно двигаться дальше. Не буду утверждать что это лучший способ заниматься ликбезом при нуле знаний... Утверждать не буду, но всё же осторожно предположу, что это действительно лучший способ ликбеза, когда знаний ровно столько, чтобы понимать эти книги, начав читать со второго тома.

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

Ответить | Правка | Наверх | Cообщить модератору

129. "Опубликован третий том общедоступной книги 'Программирование..."  +1 +/
Сообщение от Аноним (-), 30-Июл-17, 01:01 
Что за ерунду вы несете? Чем вам так плох Паскаль? Мы ведь учимся выражать свои мысли в форме готовой программы. Язык - лишь инструмент. Сам язык вторичен. С, С++, Асм - сложные языки и довольно "недружелюбные" к новичкам . А начинать следует с простого.
Ответить | Правка | К родителю #121 | Наверх | Cообщить модератору

130. "Опубликован третий том общедоступной книги 'Программирование..."  –2 +/
Сообщение от Orduemail (ok), 30-Июл-17, 02:20 
> Чем вам так плох Паскаль?

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

> Мы ведь учимся выражать свои мысли в форме готовой программы.

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

> Сам язык вторичен. С, С++, Асм - сложные языки и довольно "недружелюбные" к новичкам.

C не более недружелюбен, чем Pascal. C++ -- смотря как его излагать, он удобен тем, что позволяет использовать лишь подмножество себя, которое не сильно-то отличается от паскаля да C, и таким образом он не более недружелюбен к новичкам, чем C и Pascal. Насчёт же недружелюбности ассемблера ты глубоко заблуждаешься, впрочем, следом за подавляющим большинством профессуры.

> Сам язык вторичен.

В том-то и дело, что язык вторичен. С точки зрения простоты изучения программирования единственное свойство языка, на которое следует обращать внимание при выборе его -- это то количество понятий, абстракций и синтаксических конструкций, которое придётся изучить для того, чтобы в голове сформировалось бы полное по Тьюрингу подмножество языка. Как только такое подмножество сформировалось, как только оно было освоено, можно заниматься накоплением опыта, и новые понятия усваивать как обобщение уже накопленного опыта. До того, как это подмножество сформировано, подчастую приходится усваивать новые понятия и абстракции без опоры на конкретный опыт, а вот это сложно. Я сравнительно недавно переживал эту сложность в своей жизни ещё раз: я осваивал rust, на котором очень сложно писать программы, пока понятия lifetime'ов и borrowing'а не освоены на уровне автоматизированных навыков, обрести такие навыки можно исключительно через опыт программирования на rust'е, но когда эти понятия не освоены, опыт программирования на rust'е сводится к борьбе с борроу-чекером компилятора. К борьбе, которая эпизодически скатывается в партер метода Монте-Карло, когда в программу вносятся рандомные изменения, отбираются те, которые уменьшили количество ошибок и отбрасываются те, которые количество ошибок увеличивают. Так вот, это был не первый раз в моей жизни, когда я оказывался в столь непростой ситуации, со мной такое случалось неоднократно. И, отмечу, не всегда я выходил победителем. Но с растом мне удалось справиться, и, что более интересно, этот опыт оказался последней каплей, которой мне не хватало для перехода к обобщениям, из которых вытекают, в том числе, и совершенно неожиданные последствия: я перестал ненавидеть бейсик. Вот тот древний бейсик с номерами строк. Потому что я понял, что мои успехи на первых шагах знакомства с программированием были обусловлены именно тупизной того бейсика, тем что в нём минимум абстракций, которые надо понять, для того, чтобы начать писать осмысленные программы. Там не было циклов, не было условий в смысле структурного программирования. Не было блоков команд, не было ничего лишнего. Там было последовательное выполнение строк программы, на каждой строке какое-нибудь одно выражение либо "IF condition THEN выражение". Ещё был GOTO, который при желании можно было использовать вместе с IF. Ну и несколько команд -- для ввода/вывода текста с/на экран, и вывода простеньких графических примитивов. Чуть позже меня познакомили с массивами. И этого было достаточно для всего.

Когда же я перешёл к C, то нового я там увидел только в типизации -- struct, union, enum. Всё остальное -- циклы, условия и даже функции, были для меня не новыми понятиями, которые надо освоить теоретически, а потом научиться применять практически -- нееет, они были для меня охрененно удобным способом записи того, что я и без того мог налабать на бейсике и более того неоднократно лабал. Я тогда в десятом классе влюбился в C по уши.

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

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

Ответить | Правка | Наверх | Cообщить модератору

131. "Опубликован третий том общедоступной книги 'Программирование..."  +2 +/
Сообщение от Аноним (-), 30-Июл-17, 02:46 
Вот потому Паскаль - академический язык. Он хорошо подходит для обучения. Мы учимся выражать свои мысли вообще! Паскаль - это удобно и понятно. Его легко понять и тем более освоить. Без всяких "подводных камней".  После обучения - весь языковой парк ваш! А что до ассемблера - даже глупо его предлагать в качестве первого самодостаточного языка. Я вообще склонил своего преподавателя к Modula 2 вместо С. А в последствии к Оберону перешли. Потому что добрая половина группы просто "не въезжала" в С. А я был один из тех, кто "вытаскивал" таких на своем горбу и мне это довольно быстро надоело.
Ответить | Правка | Наверх | Cообщить модератору

133. "Опубликован третий том общедоступной книги 'Программирование..."  +/
Сообщение от Orduemail (ok), 30-Июл-17, 11:11 
Ещё раз скажу тебе: паскаль не удобнее чем C: я пробовал и то, и это. Если тебе кажется иначе, то тебе кажется.
Про ассемблер я не уверен: мне пока не придумать, где бы набрать выборку на пару групп человек по пятнадцать, для постановки эксперимента, с тем чтобы сравнить C и ассемблер по простоте освоения. Не возвращаться же в школу ради утоления любопытства. Да и в школе всё равно не позволят такие эксперименты всякие придурки-чиновники от образования.
Ответить | Правка | Наверх | Cообщить модератору

135. "Опубликован третий том общедоступной книги 'Программирование..."  +/
Сообщение от Аноним (-), 30-Июл-17, 12:34 
Мне не кажется в отличие от вас. Имел возможность столкнуться с этим еще на курсах. Впрочем, я подозревал что вы все же не не поймете этого. Или не захотите понимать. Намного проще других придурками обзывать, чем признавать проблему.
Ответить | Правка | Наверх | Cообщить модератору

136. "Опубликован третий том общедоступной книги 'Программирование..."  +/
Сообщение от Orduemail (ok), 30-Июл-17, 14:39 
> Мне не кажется в отличие от вас. Имел возможность столкнуться с этим
> еще на курсах.

Именно что кажется. Вы столкнулись с фактами, и факты -- это факты. Они действительно не кажутся вам. Но вот те теоретические выводы которые вы делаете из фактов не имеют валидности вообще. По-крайней мере, если судить по вашему описанию вашего опыта. Одна группа? Интрасубъектный план эксперимента? Никаких попыток проконтролировать вмешивающиеся переменные? Как я понял, смена языка программирования для изучения привела к улучшению восприятия материала группой? Почему вы это объясняете тем, что язык стал лучше, а не самим фактом смены языка? Если поменяли язык, изучаемый группой, значит объяснили всё ещё раз и немного другими словами. Это значит, что группа посмотрела на то же самое, немного в другом синтаксисе. Вам бы следовало взять ещё одну группу и обучать её языкам в обратном порядке: начать с паскаля, а потом перейти к C и посмотреть: был бы результат лучше или хуже. Тогда можно было бы увидеть, что влияло сильнее -- язык или смена языка.

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

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

Естественно я не признаю "проблемы", которая сформулирована умозрительно, без сколь-нибудь статистически значимой опоры на реальный опыт. Не, если бы у меня не было своего опыта, я бы принял во внимание ваш. Но мой опыт -- это три года преподавания информатики в школе. По 18 часов в неделю. Более десятка отдельных групп, и они обучались трём разным языкам межсубъектно. Там тоже  было немало вмешивающихся переменных, например, хоть мне и был тогда важнее результат, чем моё отношение к преподаваемым языкам, но отношение тоже, надо полагать, влияло. Миграция с языка на язык коррелировала с ростом моего учительского стажа, а значит полученные зависимости могут отражать не влияние языков, но влияние опыта. Но и тем не менее, этот мой опыт позволяет делать на порядок более валидные выводы, чем ваш. Поэтому вы уж простите -- ничего личного -- но я доверюсь своему опыту и останусь при прежнем своём мнении: выбор между C и Pascal никак не делает задачи препода/студента легче или сложнее.

Если вам до сих пор непонятно о чём я, почитайте вот эту интересную историю о том, как ухудшение условий труда приводило к повышению производительности труда: https://ru.wikipedia.org/wiki/%D0%A5%D0%...
Там, в силу использования многих групп и обширного интервьюирования участников, мужикам удалось отследить утерю валидности эксперимента. У вас не было многих групп, не было сравнения их в динамике, не было никаких попыток убедиться в том, что установленные корреляции следует объяснять именно так, как вам хочется, а не как-нибудь иначе. И на основании такого рода умозаключений вы пытаетесь в чём-то убедить меня?

Ответить | Правка | Наверх | Cообщить модератору

140. "Опубликован третий том общедоступной книги 'Программирование..."  +1 +/
Сообщение от Аноним (-), 30-Июл-17, 16:25 
Тогда к чему все это? Я просто убежден в том, что С и С++ - это язык профессионалов и для  профессионалов. Проблема тут даже не в синтаксисе. Слишком в нем много "подводных камней". Все это общеизвестные факты. Даже и не знаю о чем тут можно вообще спорить. А что до эмоциональной аргументации... давайте без ваших инсинуаций! Вся эта мощь С и С++... все это конечно здорово, но попытки "осилить" всего его сильные стороны - только подрывает учебный процесс и уверенность в себе студентов.
Ответить | Правка | Наверх | Cообщить модератору

143. "Опубликован третий том общедоступной книги 'Программирование..."  +/
Сообщение от Orduemail (ok), 30-Июл-17, 19:24 
> Тогда к чему все это? Я просто убежден в том, что С
> и С++ - это язык профессионалов и для  профессионалов. Проблема
> тут даже не в синтаксисе. Слишком в нем много "подводных камней".

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

> Все это общеизвестные факты.

Миллионы мух, как известно... Кому эти факты "общеизвестны"? Программистам? Давайте оценим средний педагогический опыт этих программистов. Там хотя бы 10 минут опыта на человека наберётся?


> А что до эмоциональной аргументации... давайте без ваших
> инсинуаций!

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

Кстати аргументация Столярова в пользу выбора Pascal вместо C++ ничем не лучше вашей, но зато она обширнее, и по ней совершенно определённо можно судить, что Столяров не различает использование языка для начального преподавания и использование языка для написания хорошего промышленного кода. И это называется доктор наук, даже дабл-доктор -- физмат и философский. Не, ну ладно дохтур физмат наук от математики/информатики, таким простительно быть в отрыве от реальности и путать реальность со своими теоретизированиями, но чтоб философ такую муть нёс... Но не зря ж говорят, что в нашей стране гуманитарное образование убито в ноль строительством коммунизма.

Ответить | Правка | Наверх | Cообщить модератору

148. "Опубликован третий том общедоступной книги 'Программирование..."  +/
Сообщение от Аноним (-), 31-Июл-17, 01:20 
Да не собираюсь я вас в чем-то убеждать, и тем более с вами спорить. Вы преподаватель, а не я. Вам и карты в руки! У меня все.
Ответить | Правка | Наверх | Cообщить модератору

159. "Опубликован третий том общедоступной книги 'Программирование..."  +/
Сообщение от anonymous yet another (?), 02-Авг-17, 09:01 
Ordu преподаватель?! О, боги!
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру