LINUX.ORG.RU

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

 , , ,

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

4

5

Тихо и незаметно 30 апреля 2026 года вышло издание 2.92, которое наконец включает в себя читаемый текстовый слой.

Исправлены опечатки и ошибки, обнаруженные в предыдущих изданиях, в частности 2.91 (где введена кликабельная навигация) и 2.9 (первое чисто электронное издание).

Книга предназначена для самообучения основам программирования и в отличии от многих других изданий предполагает фундаментальный подход — вначале основы дискретной математики и использования GNU/Linux или BSD с командной строкой, затем паскаль, потом ассемблер и только потом Си, системное программирование и альтернативные парадигмы (функциональное, логическое и так далее).

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

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

>>> Ссылка на страницу издания

>>> Альтернативные способы скачивания

>>> Новость на сайте автора

★★★★★

Проверено: dataman ()
Последнее исправление: CrX (всего исправлений: 10)
Ответ на: комментарий от Xenius

А уже освоив его можно переходить на другие языки, когда в нём становится тесно.

Если он нужен только для обучения - то он не нужен. Почему - уже неоднократно объяснялось. Бери питон и учи на нём. Учить придется меньше, учебные часы не будут потрачены впустую.

Ничего плохого в написании практически полезных программ на паскале нет.

Кроме того, что их можно писать на питоне. И не только их, но и вещи посложнее.

Поэтому и нет смысла начинать обучение с питона.

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

А в «аналогичной» книге про питон наверняка пишут, как поставить какую-то неведомую хрень под Windows и использовать IDE, не так ли?

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

Ты книгу Столярова вообще не читал что ли?

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

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

Отлично, я всё это разбирал, и объяснял, почему это бред.

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

Нет. Питон нужен по четырем причинам: (1) он очень высокоуровневый и позволяет организовать гладкую кривую обучения; (2) он живой, в отличие от паскаля; (3) на нем можно решать широкий спектр практических задач; и (5) он отлично интегрируется с си, что позволит плавно перейти от одного к другому.

Ни одну из этих задач паскаль не решает.

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

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

В этом смысле, на Паскале проще найти, чем на Си. Потому что Паскаль входит в языки для ЕГЭ, а Си не входит (входит Си++). А начинать учить с Си++, по-моему, перебор.

Это как раз не проблема, а ее решение.

Здесь проблема не со списками (тем более, что в Питоне они на самом деле массивы). Проблема в том, что базовым типом является словарь. То есть, если человек первым языком изучает Перл или Питон, то он сначала все алгоритмы строит на словарях, а только потом, если видит что ключ - только натуральные числа в непрерывном диапазоне, тогда переходит к массиву-list, а если ещё и значение всегда одного типа, тогда к массиву-array.

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

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

В принципе, для современного программирования это некритично. Почти все программы пишутся не оптимально. Но вроде как учить надо правильному программированию.

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

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

А чем? Вроде программы построчно совпадают.

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

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

Так это же хорошо?

Тут как бы стоит разделять…

Зачем?

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

В этом смысле, на Паскале проще найти, чем на Си. Потому что Паскаль входит в языки для ЕГЭ, а Си не входит (входит Си++). А начинать учить с Си++, по-моему, перебор.

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

тем более, что в Питоне они на самом деле массивы

Нет, в питоне список - это буквально список: Lists are typically implemented either as linked lists (either singly or doubly linked) or as arrays, usually variable length or dynamic arrays. Ты, наверное, путаешь со связными списками и другими разновидностями списков.

Проблема в том, что базовым типом является словарь. То есть, если человек первым языком изучает Перл или Питон, то он сначала все алгоритмы строит на словарях…

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

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

Если ты изначально не будешь заниматься ерундой с попытками прстроить словарь как базовый тип (что уже само по себе некорректно) - ничего перестраивать и не придется. Учи нормально - будет нормально.

В том же 1С алгоритм поиска наименьшего значения студенты часто записывают как «отсортировать и взять первый элемент».

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

Но вроде как учить надо правильному программированию.

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

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

явно пишет, причём в предисловии

Кто читает предисловия?!

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

Если студент столкнется с какой-то проблемой - для живого языка ему будет проще найти решение в интернетах

Пайтон идеально подходит для обучения вайбкодингу?

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

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

Где-то выше вроде было про питон и си. Ладно, значит я не понял. Про питон согласен.

Нет, в питоне список - это буквально список: Lists are typically implemented either as linked lists (either singly or doubly linked) or as arrays, usually variable length or dynamic arrays. Ты, наверное, путаешь со связными списками и другими разновидностями списков.

Я не путаю. Я указываю, что массив является списком (как абстрактным типом данных). И что в питоне list это динамический массив. Связные списки если нужны, то в библиотеках.

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

Если нужна именно такая операция, то да. Можно удалять значение просто отмечая, что его нет (значением «пусто»). На словарях сдвиг можно явно циклом сделать.

И потом, как научишь человека - так он и будет писать. Начнешь со списков с числами - он и будет обращаться с ними, как положено.

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

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

учился писать на Perl. У него всё было в ассоциативных массивах.

Как привык, так и делает. Мозг хитрый и ленивый.

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

Как привык, так и делает. Мозг хитрый и ленивый.

Я именно про это. И если в Си и Паскале ассоциативный массив надо писать двумя экранами кода, в Си++ хотя бы сочинять достаточно длинную строку типа, то в Перле/Питоне/Яваскрипте работа с ассоциативными массивами настолько же проста, как и с обычными. Поэтому желание перейти на простой появляется только если понадобился сдвиг индексов у хвоста массива или что-то подобное.

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

Если он нужен только для обучения - то он не нужен.

Не только для обучения, но и для работы на первых порах. А когда уже уложатся в голове знания и понимание как надо делать — не только на учебных, но и на практических задачах, можно переходить на более серьёзные языки — ассемблер и Си. Или если нужен питон, то можно и на питон.

Ничего плохого в написании практически полезных программ на паскале нет.

Кроме того, что их можно писать на питоне. И не только их, но и вещи посложнее.

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

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

Чем проще?! Ну чем вот? Где пруфы что на питоне проще?

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

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

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

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

Заметь что в этом пункте твой и его подход совпадают.

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

В этом я с ним не согласен. Я например Windows (XP) пользовался целых четыре года после покупки первого компа, прежде чем наконец его снёс и полностью перешел на GNU/Linux. Кстати перешел я в связи с выходом Vista, я её поставил, она ужасно тормозила, а линукс современной версии летал не хуже XP.

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

Так Столяров тоже предлагает современный паскаль. А твоя критика паскаля основана на древнем паскале, который никто и не предлагал.

Нет. Питон нужен по четырем причинам: (1) он очень высокоуровневый и позволяет организовать гладкую кривую обучения; (2) он живой, в отличие от паскаля; (3) на нем можно решать широкий спектр практических задач; и (5) он отлично интегрируется с си, что позволит плавно перейти от одного к другому.

В задачах уровня школы и первого курса код на паскале, C++, Бейские, Python и КуМире выглядит примерно одинаково. Если не веришь, посмотри решения задач ЕГЭ по информатике. Там один в один то же самое, ключевые слова только разные. Для практического применения ввода-вывода через stdio и параметры комадной строки в принципе достаточно, так что и в первых практических задачах код будет один-в-один.

Ни одну из этих задач паскаль не решает.

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

2, 3 и 5 свойствено и питону и паскалю, а пункт 4 ты пропустил.

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

Если нужна именно такая операция, то да. Можно удалять значение просто отмечая, что его нет (значением «пусто»). На словарях сдвиг можно явно циклом сделать.

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

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

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

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

Мы же говорим об обучении по литературе и с преподавателем.

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

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

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

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

>>> str( str.__dict__)[:80]
"{'__repr__': <slot wrapper '__repr__' of 'str' objects>, '__hash__': <slot wrapp"
vM ★★★
()
Ответ на: комментарий от Xenius

книги Столярова предназначены для обучения без преподавателя.

В то же время сам Андрей Викторович предлагает платные услуги индивидуального менторинга

http://stolyarov.info/mentoring.html

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

В этом я с ним не согласен. Я например Windows (XP) пользовался целых четыре года после покупки первого компа

Вы же не по книгам самого Андрея Викторовича учились?

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

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

Нет никакого смысла, если можно взять питон. Бритва Оккама.

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

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

Питон кстати ещё и жутко тормозной

Бред. Тормозной в каких задачах - CPU-bound или IO-bound? Во-первых, на стадии алгоритмики и изучения проектирвоания ты никогда в жизни не столкнешься с такими проблемами. А на стадии изучения си, столкновение с медленной обработкой каких-то данных будет полезным учебным упраждением, чтобы иинтегрировать питон с сями. Я уже раз пять повторил эту идею, наверное.

Чем проще?! Ну чем вот? Где пруфы что на питоне проще?

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

Вот Столяров как раз обосновывает это так

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

Так Столяров тоже предлагает современный паскаль. А твоя критика паскаля основана на древнем паскале, который никто и не предлагал.

Нет никакого «современного паскаля». Паскаль мёртв и никому не нужен за пределами академической среды и кучки фанатов.

Для практического применения ввода-вывода через stdio и параметры комадной строки в принципе достаточно

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

Первый пункт я разобрал. Высокоуровневость в начальном обучении роли не играет и только забивает мозги ненужной хренью.

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

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

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

2, 3 и 5 свойствено и питону и паскалю

Нет.

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

Он вообще считает, что программированию невозможно научить

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

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

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

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

консольное приложение-фильтр можно легко написать

в Microsoft Visual Studio

Для консольных приложений в винде специальная подсистема есть.

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

вопрос 1. кого учим(т.е это семафоры андеркто0то али аж магистры и джва докторанты)

дело в на каком слое - т.е словари питона это key-value которое в абстракциях даже менее дорого в части «когнитивной нагрузки» чем не просто вектор(list питона с динамическим резайзом) а даже последовательность

ваще задачкой для соотвествующего уровня есть наворачивание своего класса например аналога list через например использования под капотом dict ( на queue слишком не спортивно) - именно для понимание скрытой цены абстракций и при этом принимая во внимание явной цены многословности в более низкоуровневых языках

ваще видно что оснвная претенция к Пасквилю не том что Карузо плохо поёт а в том что Мойши не те

ибо если взять корпус текстов учебной литературы зенита Паскаля и корпус таких же текстов по Python - очевидно что процессы идентичны - 95% этих корпусов литературы(П) повышают издержи обучения

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

Начнешь со списков с числами - он и будет обращаться с ними, как положено.

это привязка к плоской модели памяти ващет

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

ну всёж общеизвестный ТрупоПаскаль более многословен чем современный Python

в целом эволюция любого языка приводит к большим серым зонам где «не только лиш все»

например в Python в отличии от Паскаль/Си нет проблемы с указателями :)

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

Для начала достаточно двух составных типов — записи и массивы,

а с чего бы эти искусственные структуры (которых нет в современных железках в отличии от почивших в бозе тегированных машин) ваще считать частью модели машины на которою учат?!

даже отдельные регистры от ram - компромисс реализаций в железе

вопрос именно в том на каком уровне абстракции и на какую аудиторию предназначено ознакомление

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

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

как это?

ваяешь свою адт через class и получаешь более удобный синтаксис и трассировку на уровнях O по вычислениям и по памяти в тиках/обьёмах моделируемых сущьностей

абстракции тем и сильны что они матрёшатся

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

даже отдельные регистры от ram - компромисс реализаций

в автоматической цифровой обработке данных registers предшествуют

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

ну они скорее защёлки

на уровне ISA это(выделение подручной cpu памяти в отдельное адресное пространство) - именно практический трэйдоф - прст более привычный чем битва с потерей когерентности кэшей :)

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

Конечно. Я думал, что с Си сравнение.

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

например в Python в отличии от Паскаль/Си нет проблемы с указателями :)

Делаем memory = [0] * 4096. И работаем как на Си, трактуя числа от 0 до 4095 как указатели на объекты в memory.

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

Делаем memory = [0] * 4096. И работаем как на Си, трактуя числа от 0 до 4095 как указатели на объекты в memory.

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

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

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

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

В паскале указатели есть. А в питоне нет. Но их можно сделать.

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

В паскале указатели есть. А в питоне нет. Но их можно сделать.

ЗАЧЕМ?

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

Вы же не по книгам самого Андрея Викторовича учились?

В школе был паскаль, частично в тетрадках.

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

Нет никакого смысла, если можно взять питон. Бритва Оккама.

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

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

А тебе кто-то мешает разобраться, как подключать сишные библиотеки из паскаля?

Бред. Тормозной в каких задачах - CPU-bound или IO-bound?

Проц и память. Например вывести на stdout первый миллиард простых чисел.

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

Нахрена нужные сложные структуры данных тому кто в первый раз увидел код? Это требуется уже состоявшимся программистам, которые пишут программы на тысячи строчек. Это лишнее усложнение и забивание мозгов мусором, который не пригодится в других языках, потому что сами структуры похожи, но синтаксис доступа к ним и тд специфичны именно для питона.

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

программировать не умеешь, и питона не знаешь. Как ты вообще можешь сравнивать?

Чуток знаю. Я прошел все курсы от яндекса за полдня как-то. Хрень этот ваш питон.

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

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

Как ты мог это разобрать, если ты вообще не знаешь питон и не умеешь программировать?

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

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

Так в паскале тоже можно. Всякие указатели и тд — это уже продвинутый уровень. А базовые возможности вроде объявить переменную, вывести и тд примерно одинаковые.

Любую из этих структур можно запросто написать и объяснить на питоне без всяких проблем.

Ну ладно. Предположим для решета Эратосфена требуется битовый массив размером с 8 миллиардов бит, причём он будет полностью забит и на компе свободно чуть более 1 гигабайта памяти (ну RPi какой-нибудь). Как ты это сделаешь?

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

пишу небольшие программы, которые полезны лично мне

Это не профессиональное программописание

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

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

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

фанаты паскаля

Вам то и дело всевозможные фанаты мерещатся?

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

почему не на словаре?(потомком его с коредампом raise на не все но некоторые запредельные нумера)

Чтобы арифметика указателей была. Можно и на словаре с числовыми ключами.

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

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

Напиши на Паскале, как сформировать

def inc(a):
   def f():
      nonlocal a
      a = a + 1
      return a
   return f

и

def simple_generator():
   yield 1
   yield 2
   yield 3

Проблема Паскаля и Си в том, что студента учат только простым структурам, так как сложные на них невозможно достаточно просто изобразить. А потом студент берёт JS или Питон и понимает, что ничего не понимает.

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

Наоборот, питон — это ненужное усложнение.

Убирание указателей и упрощение синтаксиса - это усложнение, так и запишем.

А тебе кто-то мешает разобраться, как подключать сишные библиотеки из паскаля?

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

Проц и память. Например вывести на stdout первый миллиард простых чисел.

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

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

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

Чуток знаю. Я прошел все курсы от яндекса за полдня как-то. Хрень этот ваш питон.

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

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

Зачем ты перефразируешь мои слова из предыдущего поста, приписывая их себе?

С чего ты взял, что не знаю?

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

Так в паскале тоже можно.

А если можно в питоне, то зачем паскаль?

Предположим для решета Эратосфена требуется битовый массив размером с 8 миллиардов бит, причём он будет полностью забит и на компе свободно чуть более 1 гигабайта памяти (ну RPi какой-нибудь). Как ты это сделаешь?

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

У тебя просто бинарное мышление: выучил язык - обязательно надо писать всё подряд на нём. Суть изучения питона в том и состоит, что на нем надо учиться писать логику (и потом писать высокоуровневые алгоритмы), а на сях к нему - модули, которые обеспечивают производительность. Никто в здравом уме не пишет числодробилки на чистом питоне. У всех языков своя область применения, и ты этого никак не можешь понять. Опять же, потому что программистом ты не являешься.

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

Чтобы арифметика указателей была.

Ты можешь мне ответить наконец на вопрос, ЗАЧЕМ? Зачем тебе указатели на стадии изучения алгоритмики?

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

в Microsoft Visual Studio Для консольных приложений в винде специальная подсистема есть.

Ты это серьёзно или прикалываешься? Подсистема-то конечно есть, но работает через такую задницу, что лучше бы не работала.

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

Для учебных целей достаточна. Также, как и Турбо Паскаль.

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

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

Столяров же предлагает указатели, побочные эффекты и прочую дурь навалить прямо на старте. Неудивительно, что у него куча студентов «необучаемые». Это не они необучаемые, это он - дурачок с кашей вместо учебной программы.

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

В случае моей концепции, сначала учится базис питона

Что в Вашей концепции «базис питона» ?

И можно ли прочитать связное изложение Вашей концепции вне постов на форумах?

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

def inc(a): def f(): … return f

Ну какая-то псевдофункциональщина. С нормальными функциональными языками всё равно ни в какое сравнение не идёт.

Зачем это студенту который только начинает изучать программирование?

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

Зачем это студенту который только начинает изучать программирование?

Затем, что это нынче используется практически во всех языках. От JS до Scala. А на Паскале эту конструкцию выразить невозможно. В результате студент, получив такую задачу или встретив такой код, понять его не может. Получается как в https://lesswrong.ru/w/%D0%9F%D1%80%D0%B8%D1%82%D1%87%D0%B0_%D0%BE_%D0%BA%D0%B8%D0%BD%D0%B6%D0%B0%D0%BB%D0%B5

И async нынче надо в базовом курсе давать, потому что тоже повсюду.

monk ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)