Re[3]: Чем плох Паскаль?
От: MasterZiv СССР  
Дата: 24.09.19 09:17
Оценка: -1
Здравствуйте, Pzz, Вы писали:

C>>В современном варианте было бы лучше что-то типа Питона с графической средой. Или как вариант: https://www.apple.com/swift/playgrounds/ — лучшее, что я вообще видел для детей.


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


Нет. Даёт лёгкость.
Re[3]: Чем плох Паскаль?
От: MasterZiv СССР  
Дата: 24.09.19 09:20
Оценка: +1
Здравствуйте, kov_serg, Вы писали:


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


Потому что удобно её находить, она всегда по ходу чтения и выполнения кода обнаруживается.
Вот это мы сделали -- И ЗАПОМНИМ РЕЗУЛЬТАТ.

Сравни с

МЫ ПИШЕМ ФУНКЦИЮ ПОИСКА В СТРОКЕ ПОДСТРОКИ

МЫ БУДЕМ ЗАПОМИНАТЬ:
текущий индекс символа строки q, как целое
текущий символ строки как символ

...


А ТЕПЕРЬ НАЧНЕМ!
....
....
....
....
....
....
....
....
....
....
....
....
....
....
....
....
....
....
....
....
а тут мы увеличим q !
Re: Чем плох Паскаль?
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.09.19 04:33
Оценка: +3
Здравствуйте, Cicero, Вы писали:

C>Очень часто это слышу: Паскаль(иногда конкретизируют: Turbo Pascal) не подходят для обучения программированию.

C>Обычно аргументов нет. Самый "сильный" аргумент — это несовременный!

C>Давайте обсудим и выработаем обоснованные аргументы.


C>Во первых нужно конкретизировать:

C>для обучения где? в общеобразовательной школе? в ВУЗе? в ВУЗе которые готовят именно программистов?
C>как первый язык программирования? как второй?

C>Выскажу свое мнение:

C>Для обучения в школе как первый язык программирования с которым человек встречается Паскаль очень даже подходит.
C>Причем если не позволяет "железо" более современные версии вполне подойдет и Turbo Pascal 5.5.
C>На Turbo Pascal вполне можно обучать и элементы ООП.

C>Почему:

C>Говоря двумя словами: потому что в Паскале минимум неоднозначности синтаксиса.
C>ИМХО это научит контролировать код более строго.

Ох-хо-хо. Есличо, у меня ТурбоПаскаль — это был второй язык (после бейсика) в школьные годы.
И я полностью согласен — он несовременный.
Что в нём не так?

Во-первых, начнём с конца: а что должно получаться у ученика в результате выполнения учебного задания?
Раз мы учим программированию, то, наверное, должна получаться программа.
Ну ок, в 1970 в качестве "программы" вполне подходили штуки, которые спрашивали с консоли значения a, b, и с, и выводили в консоль корни квадратного уравнения.
Но как бы сейчас 2019, среди детей уже нет IT-девственников. Детишки видели, как выглядят настоящие программы. Кому будет интересна вот эта вот консольная хрень? Да никому. Всё, что дети усвоят из такого курса программирования — что оно для фриков. И что их явно обманывают — потому что никаким эволюционным путём они не смогут превратить консольную программу в мобильный клиент альфабанка или хотя бы виндовый калькулятор.

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

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

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

Для освоения самого программирования нужен язык + среда, которые
а) содержат современные языковые конструкции
б) позволяют писать настоящие полноценные программы, пусть даже и простые

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

Ещё недавно хорошо бы подошёл Delphi — как раз потому, что на нём состряпать свой первый hello world занимает секунды, а вся неаппетитная начинка спрятана под капот. При этом hello world будет не серым текстом на чёрном фоне, а вполне себе настоящим приложением, достойным запуска на windows desktop. И дальше можно изучать вширь — осваивая новые компоненты и способы их совместного применения, и вглубь — понимая, как эти компоненты устроены внутри.

Увы, сейчас даже Delphi староват. Что у нас на рынке? бэкенд, веб-фронтенд, мобильные приложения. Для них надо что-то получше дельфей.
По-хорошему, нужна среда, которая позволяет сделать шлёп-шлёп приложение для iOs/Android — чтобы маме на телефон поставить, и оно по-настоящему заработало. Чтобы детишко понимало: ну ок, я вижу не всю картинку — чтобы это приложение продавалось, надо ещё в 10-100 раз больше работы провести, но я эту работу провести могу! Знаю что, знаю как, знаю, где почитать о том, чего пока не знаю.

А не так, что вот вам сложение, вот умножение, вот деление с остатком, всё, теперь вы знаете всю математику — А ТЕПЕРЬ РЕАЛИЗУЙТЕ-КА МНЕ ШИФРОВАНИЕ НА ЭЛЛИПТИЧЕСКИХ КРИВЫХ!
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Чем плох Паскаль?
От: Vlad_SP  
Дата: 26.09.19 07:15
Оценка:
Здравствуйте, Sinclair,

S>Раз мы учим программированию, то, наверное, должна получаться программа. [........]

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

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

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

Ведь из "среднего" такого школьного класса профессиональными программистами станут дай то Б.Г. 1-2% учеников. Остальные станут — доярками, писателями, водителями, поварами, врачами... ну и так далее, список профессий можно расширять до бесконечности. Зачем им "реальное промышленное программирование"??? Кой черт водителю сдался этот самый Паскаль или там не дай Б.Г. JavaScript ?
Вот возьмем к примеру девочку, мечтающую стать балериной. На уроках алгебры условная Марь Ванна талдычит что-то про свои синусы и катеты. Да девочка забудет все эти катеты как страшный сон, на следующее же утро после сдачи ЕГЭ! И ровно то же самое произойдет, когда на уроках "программирования" условный Сан Сеич будет ей талдычить о каких-то переменных, циклах и не дай Б.Г. каких-то "замыканиях".

Факультативно (факультативы там в школе, кружки программирования и т.д.) или "с углубленным изучением" — эт да. А в обычной-то средней школе тот же Паскаль — зачем??
Re[3]: Чем плох Паскаль?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 26.09.19 09:06
Оценка:
Здравствуйте, Vlad_SP, Вы писали:

V_S>Ведь из "среднего" такого школьного класса профессиональными программистами станут дай то Б.Г. 1-2% учеников. Остальные станут — доярками, писателями, водителями, поварами, врачами... ну и так далее, список профессий можно расширять до бесконечности. Зачем им "реальное промышленное программирование"??? Кой черт водителю сдался этот самый Паскаль или там не дай Б.Г. JavaScript ?


Конкретные Pascal или JS — вряд ли. А вот общее понимание, как запрограммировать даже какое-то относительно тупое устройство сделать то, что им нужно — это важно каждому.
Например, может быть регулирование обогрева квартиры в зависимости от времени суток, дня недели, количества людей в квартире и т.п.
Сейчас для такого обходятся табличными методами, списками и тому подобным, но это недостаточно гибко. А чем дальше, тем больше потребуется такой гибкости и умения её применить.
Это в быту. И по профессии:
— доярка? может, у каждой коровы своя специфика, сколько пытаться выдаивать.
— писатель? даже задача переименовать персонажа во всех падежах может требовать работы
— повар? интеллектуальный контроль готовности блюда, зависимость рецепта от концентрации ключевых веществ в образце сырья...
да если подумать, будут тысячи примеров, как умения программировать можно применить, если не лениться.

V_S>Вот возьмем к примеру девочку, мечтающую стать балериной. На уроках алгебры условная Марь Ванна талдычит что-то про свои синусы и катеты. Да девочка забудет все эти катеты как страшный сон, на следующее же утро после сдачи ЕГЭ! И ровно то же самое произойдет, когда на уроках "программирования" условный Сан Сеич будет ей талдычить о каких-то переменных, циклах и не дай Б.Г. каких-то "замыканиях".


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

И, кстати, в рамках anecdotal evidence: долгие годы майнтейнером groff был дирижёр симфонического оркестра. Уж на что гуманитарная профессия

V_S>Факультативно (факультативы там в школе, кружки программирования и т.д.) или "с углубленным изучением" — эт да. А в обычной-то средней школе тот же Паскаль — зачем??


Ну с заменой языка на что-то более универсально-скриптовое вроде Питона — таки полезно всем.
The God is real, unless declared integer.
Re[3]: Чем плох Паскаль?
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.09.19 10:55
Оценка: 3 (1)
Здравствуйте, Vlad_SP, Вы писали:

V_S>Если мы говорим о некоей физматшколе (ну или по крайней мере, "школе с углубленным изучением математики и/или информатики"), то да. А вот если взять обычную, самую-самую среднюю такую общеобразовательную школу? Уместно ли в школьную программу даже из самых благих побуждений впихивать "ту часть языковых конструкций, которые встретятся ему в реальном промышленном программировании"?


Эмм... Если честно, то полного готового ответа на этот вопрос у меня нет.

V_S>Ведь из "среднего" такого школьного класса профессиональными программистами станут дай то Б.Г. 1-2% учеников. Остальные станут — доярками, писателями, водителями, поварами, врачами... ну и так далее, список профессий можно расширять до бесконечности. Зачем им "реальное промышленное программирование"??? Кой черт водителю сдался этот самый Паскаль или там не дай Б.Г. JavaScript ?

Отлично. А на кой чёрт программисту баскетбол, или, не побоюсь этого слова, Русский Язык?
Ладно, упростим — повару география зачем?
Физику — история?
Писателю — биология?
V_S>Вот возьмем к примеру девочку, мечтающую стать балериной. На уроках алгебры условная Марь Ванна талдычит что-то про свои синусы и катеты. Да девочка забудет все эти катеты как страшный сон, на следующее же утро после сдачи ЕГЭ! И ровно то же самое произойдет, когда на уроках "программирования" условный Сан Сеич будет ей талдычить о каких-то переменных, циклах и не дай Б.Г. каких-то "замыканиях".
V_S>Факультативно (факультативы там в школе, кружки программирования и т.д.) или "с углубленным изучением" — эт да. А в обычной-то средней школе тот же Паскаль — зачем??
Смотрите, как это работает:
1. Сначала мы окорачиваем среднюю школу. Ну, то есть оставляем в ней только то, что прямо таки должны знать все-все-все: доярки, писатели, балерины, повара, врачи, шофёры... ну и так далее.
2. Всё остальное в ней — факультатив. Пусть даже с гос.финансированием.
3. Дети, естественно, перестают на эти факультативы ходить — точнее, ходят только на те, которые сочли важными родители вроде вас, считающих какие-то предметы лишними.
4. В итоге через 11 лет таких реформ мы имеем людей, которые не просто не знают каких-то дисциплин, а вообще о них не осведомлены. Не знают не просто астрономию, а о том, что астрономия вообще есть.
5. Дальше начинается кумулятивный эффект — потому, что сейчас вы наблюдаете людей, которым хотя бы пробовали преподавать синусы и косинусы. У кого-то были нормальные учителя, и дети что-то в голове оставили. У кого-то было поплоше, поэтому реальные выпускники знают курс средней школы не на 100%, а на, скажем, 25%. Так вот после того, как мы снизим планку, выпускники тоже будут знать 25%. Только не от нынешей программы, а от той — упрощённой.


Ещё Замечу, что девочка, которая в 4 классе мечтала стать балериной, запросто может к 8му растолстеть, и полностью пересмотреть своё отношение к жизни. Средняя школа (в нормальном её варианте) даёт ей возможность передумать, полюбить что-то другое, и заняться именно им.
В каком классе девочка (или её родители) должны делать выбор? Ну, вот мне, например, повезло — я с 8го класса знал, что хочу в IT.
А младшая сестра до 11 класса думала, что станет филологом. А стала таможенником. Оппа!

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

Дупа — в том, что такие люди неконкурентоспособны. Такой подход резко увеличивает социальное неравенство, потому что преимущество получают те дети, у родителей которых есть деньги и мотивация учить детей за пределами началки. Физматшкол в стране всего 4. Вы предлагаете всех остальных ничему не учить, 200 человек в год — достаточная численность основы нашей элиты.


НЕТ.
Ребёнок должен иметь возможность стать кем угодно.
Начальная школа даёт ему возможность в обществе существовать — потому что без базовых навыков чтения, письма, и счёта он тупо не сможет квартплату оплатить и в магазине консервы отличить друг от друга.
Средняя школа даёт возможность выбрать, кем становиться.
Высшая — стать этим кем-то.
Исходя из этого, программирование должно помочь детям понять, что такое программирование вообще, и как оно устроено. Даже чтобы руководить программистами, начислять им зарплату, или заказывать у них работу, желательно представлять себе, как всё это работает.
Вот примерно как я себе всё это вижу.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Чем плох Паскаль?
От: AlexRK  
Дата: 26.09.19 11:08
Оценка: +2
Здравствуйте, MasterZiv, Вы писали:

MZ>P.S. Паскаль -- говно. Всегда был говном и останется говном. Вирт дебил.


Это мнение либо круглого дурака, либо тролля. А Вирт за паскаль получил премию Тьюринга.
Re[4]: Чем плох Паскаль?
От: Vlad_SP  
Дата: 26.09.19 11:41
Оценка:
Здравствуйте, Sinclair,

S> Отлично. А на кой чёрт программисту баскетбол, или, не побоюсь этого слова, Русский Язык?


А вот если провести аналогию с "реальным промышленным программированием" — ну на кой черт программисту реальные тренировки по методикам мастерской команды (уровня сборной страны) по баскетболу? (Да у него после этих тренировок не останется сил программировать! И времени тоже.) А сколько программистов хотя бы слышали про "глокую куздру"?
Если программист будет играть в баскетбол в составе дворовой команды на свежем воздухе и ему это интересно ради собственного развлечения — да на здоровье! Та же самая ситуация со школьниками — если школьнику это интересно, и он готов этим заниматься — да на здоровье!
Имхо тут не надо смешивать общеобразовательно-обзорный уровень и уровень профессиональный.

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


Ой! Вот это уже натягивание совы на глобус. Умеет программировать Тимченко? Ротенберг? Алекперов? Потанин?
Ну ланна, не будем брать миллионеров. Вот был такой Жорес Алферов — академик, нобелевский лауреат и все такое. Умел программировать? А скажем известный писатель Даниил Гранин?

Ну хорошо, возьмем "простых людей". Вот моя теща — доктор наук (в самом деле!), катается себе по Европам с Америками с докладами, ее реально ценят зарубежные ученые (не британские учоные — почувствуйте разницу!). Вполне себе состоявшийся в жизни человек. Но вот в программировании — полный ноль. Хотя компьютер освоила в уже весьма серьезном возрасте и очень даже успешно. Как же она умудряется "выдерживать требования времени" без программирования? А признание и авторитет в мировом научном сообществе — это именно "выдерживание требований времени", КМК.

Есть такое явление — профессиональная деформация. Условно говоря, столяр в любом предмете видит молоток. То же и с программистами.

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

S>Вот примерно как я себе всё это вижу.

Вот! Это правильная точка зрения. Только я бы немного иначе сформулировал: "Исходя из этого, школьный курс информатики должен помочь детям понять, что такое..." и далее по тексту. Нет?
Причем именно "курс информатики", а не конкретно "программирование" (ну или там "шахматы", как сейчас модно) или конкретно Паскаль. В рамках этого курса можно и нужно дать школьникам понятие об алгоритме, пару-тройку простейших программ и т.п., и как это можно использовать (а можно и не использовать) в жизни. Тут уж хоть Паскаль, хоть Бейсик, хоть черт в ступе, — все хорошо. А уж всякие там "кортежи", "функторы" и иже с ними — для 99% школьников останутся пустым звуком на уроке. Кому интересно — добро пожаловать на факультатив.
Re[5]: Чем плох Паскаль?
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.09.19 15:30
Оценка: +1
Здравствуйте, Vlad_SP, Вы писали:

V_S>Здравствуйте, Sinclair,


S>> Отлично. А на кой чёрт программисту баскетбол, или, не побоюсь этого слова, Русский Язык?


V_S>А вот если провести аналогию с "реальным промышленным программированием" — ну на кой черт программисту реальные тренировки по методикам мастерской команды (уровня сборной страны) по баскетболу? (Да у него после этих тренировок не останется сил программировать! И времени тоже.) А сколько программистов хотя бы слышали про "глокую куздру"?

Как-то вы криво проводите аналогию. Так-то в школе дают совершенно полноценные правила баскетбола. Да, там нет ежедневных тренировок по 6 часов — но сам баскетбол ровно такой же, как в NBA.
И это я ещё не говорю про волейбол, прыжки через козла, бег на лыжах, и прочее.

V_S>Если программист будет играть в баскетбол в составе дворовой команды на свежем воздухе и ему это интересно ради собственного развлечения — да на здоровье! Та же самая ситуация со школьниками — если школьнику это интересно, и он готов этим заниматься — да на здоровье!

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

V_S>Ой! Вот это уже натягивание совы на глобус. Умеет программировать Тимченко? Ротенберг? Алекперов? Потанин?

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

V_S>Ну ланна, не будем брать миллионеров. Вот был такой Жорес Алферов — академик, нобелевский лауреат и все такое. Умел программировать? А скажем известный писатель Даниил Гранин?

Вот кому известен Гранин — я не знаю, а вот такой писатель, как Леонид Каганов — да.
Алфёров, я так думаю, о программировании имел вполне себе неплохое представление.

V_S>Ну хорошо, возьмем "простых людей". Вот моя теща — доктор наук (в самом деле!), катается себе по Европам с Америками с докладами, ее реально ценят зарубежные ученые (не британские учоные — почувствуйте разницу!). Вполне себе состоявшийся в жизни человек. Но вот в программировании — полный ноль. Хотя компьютер освоила в уже весьма серьезном возрасте и очень даже успешно. Как же она умудряется "выдерживать требования времени" без программирования? А признание и авторитет в мировом научном сообществе — это именно "выдерживание требований времени", КМК.

Отож. Кроме этого, она наверняка совершенно не в состоянии выполнить обыкновенный трёхочковый бросок, или отбить волейбольную подачу. Так ведь? Ну и нахрена тогда она 10 лет в школе дважды в неделю занималась этим всем?
Давайте уберём физру! Пусть будет факультативом. Давайте пройдёмся по всем предметам и уберём все те, которых не знает ваша тёща. Ведь у нас перед глазами живой пример — человек обошёлся без них.
Потом возьмём Жореса Алфёрова, и выкинем из программы всё, чего он не знал на момент выполнения работы, за которую получил Нобелевку. Если что-то останется и после этого, то алгоритм понятен: берём ещё кого-то (например, Майю Плисецкую), и как дважды два четыре доказываем, что можно прекрасно устроиться ещё без чего-то.

V_S>Есть такое явление — профессиональная деформация. Условно говоря, столяр в любом предмете видит молоток. То же и с программистами.



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

S>>Вот примерно как я себе всё это вижу.

V_S>Вот! Это правильная точка зрения. Только я бы немного иначе сформулировал: "Исходя из этого, школьный курс информатики должен помочь детям понять, что такое..." и далее по тексту. Нет?

V_S>Причем именно "курс информатики", а не конкретно "программирование" (ну или там "шахматы", как сейчас модно) или конкретно Паскаль. В рамках этого курса можно и нужно дать школьникам понятие об алгоритме, пару-тройку простейших программ и т.п., и как это можно использовать (а можно и не использовать) в жизни. Тут уж хоть Паскаль, хоть Бейсик, хоть черт в ступе, — все хорошо. А уж всякие там "кортежи", "функторы" и иже с ними — для 99% школьников останутся пустым звуком на уроке. Кому интересно — добро пожаловать на факультатив.

Ок, отлично. Что за "простейшие программы" вы им собираетесь давать? Пока что я не вижу ничего такого, что вышло бы за уровень языка Лого.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.