Re[5]: ЯП для школьников углубленно изучающих программирован
От:
Аноним
Дата:
21.10.11 09:52
Оценка:
Здравствуйте, Аноним, Вы писали:
А> Самолеты папуасов не летают. Тогда как 99.9999% императивных програм работае и приносит пользу. Пользы же от 0.0001% программ, написанных на всей из себя такой правильной и красивой функциональщины человечество пока что не видело.
Гуглом пан не пользуется? Не знает что map/reduce это функциональщина в том же виде? На youtube пан lolcat video не смотрит, в жаббере не чатится, твиттер не читает? Или тоже не знает, что Erlang и Scala это функциональные языки?
А> Я же только что объяснил, что от религии есть огромная, неоценимая польза.
От религии есть неоценимый вред поскольку она подменяет объективную реальность виртуальной.
А> То-то 99% кода все равно пишется на плюсах, а не на "нормальных" языках, что еще и какие-то там "биндинги" писать надо.
Прикинь, они УЖЕ написаны. Ровно как и рассчетные либы уже написаны на фортране и дураков писать их еще раз не наблюдается. А вот нового кода на плюсах не пишется вообще. Или современные языки или в, крайнем случае, pure C. Мне не веришь посмотри на вакансии на каком-нибудь крейглисте и отфильтруй старые проекты на плюсах, где только поддержка. Получишь тождественный ноль.
А> Ага, ага. И для всего этого НЕОБХОДИМ C++.
Для всего этого необходим матлаб в первую очередь.
Re[6]: ЯП для школьников углубленно изучающих программирован
От:
Аноним
Дата:
21.10.11 09:59
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Гуглом пан не пользуется? Не знает что map/reduce это функциональщина в том же виде? На youtube пан lolcat video не смотрит, в жаббере не чатится, твиттер не читает? Или тоже не знает, что Erlang и Scala это функциональные языки?
Да-да-да, мне сейчас будут втирать, что actor model в Erlang — это функциональщина. Только вот не получится, потому как это чистейшей воды императивный message passing. Map/reduce тоже очень мало общего с функциональщиной имеет, кроме отсутствия общего состояния между обработчиками элементов последовательности.
А>От религии есть неоценимый вред поскольку она подменяет объективную реальность виртуальной.
А это еще доказать надо, что такая подмена вредна. Народные массы населения слишком слабы рассудком, чтобы оперировать понятиями объективной реальности.
А>Прикинь, они УЖЕ написаны.
...и не используются. Все равно ведь все на C++ пишется.
А>Ровно как и рассчетные либы уже написаны на фортране и дураков писать их еще раз не наблюдается. А вот нового кода на плюсах не пишется вообще.
Да да да. Браузеры, ОС, компиляторы, игры — все, ну решительно все не на C++. Стоп! Как это "не на C++", что-ж я вру так некрасиво?!?
А>Или современные языки или в, крайнем случае, pure C. Мне не веришь посмотри на вакансии на каком-нибудь крейглисте и отфильтруй старые проекты на плюсах, где только поддержка. Получишь тождественный ноль.
Да да, жаба с шарпом как раз прочно заняли место Кобола. Поздравляю. Кого там тянет на кобольные вакансии?
А>> Ага, ага. И для всего этого НЕОБХОДИМ C++.
А>Для всего этого необходим матлаб в первую очередь.
Ну ну. На C++ написанный...
Re[5]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, __lambda__, Вы писали:
___>Здравствуйте, LaptevVV, Вы писали:
LVV>>Не... Во-первых, списки в С++ и списки в C# — две большие разницы...
___>Да неужели... ___>C#: ___>
___>Концептуально, разницы никакой не вижу. Я бы еще увидел разницу при реализации списка на чисто функциональном языке. Лень искать ссылку на работу Криса Окасаки.
Есть указатель или нет его — большая разница в понимании работы у начинающих программистов
LVV>>Например, задача перебора всех элементов массива рассматривалась в контексте преобразования всех пикселов графического отображения в оттенки серого. LVV>>Вот какие задачи я имел ввиду. ___>Ну для такой задачи, одинаково хорошо подходят C/C++/Java/C#/VB/... ___>Если и иметь в виду задачи, то я бы абстрагировался от конкретных задач и решил бы, чему должны эти задачи обучить и какой язык для этих задач больше подходит.
Это вам как педагогу надо. А школьнику надо — задачу. Конкретную. Чтоб он видел, в каких РЕАЛЬНЫХ программах подобное делается.
А не абстрактный массив или список обрабатывал. Способствует интересу. LVV>>Мои студенты на ура воспринимают задание: написать программу, решающую головоломку "Миссионеры и людоеды". LVV>>Тут тебе и проблема представления данных, и метод полного перебора, и способ реализации — рекурсия или итерация. ___>И какой язык для этого больше подходит?
Любой. Мы писали на С++, и паскале.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, Аноним, Вы писали:
А>> Без математики? Нельзя. А>Можно и нужно. Требовать для ФП математики это математический шовинизм. Для того чтобы писать в функциональном стиле математика не нужна. Ровно как для использования РБД не нужно знать реляционную теорию, а для написания парсера не нужно знать теорию формальных языков. Берешь и делаешь.
Но знание — способствует пониманию, и в итоге — более быстрому и более правильному написанию.
А>> Потому, хотя бы, что это ИНТЕРЕСНО. Что, никогда не был школьником, что ли? А>Вылезай уже из криокамеры. Это БЫЛО интересно а начале 90-х когда толковый школьник мог легко заткнуть за пояс вооруженного теорией туповатого препода. Современным школьникам это уже не интересно, поезд уже ушел. В чем прикол изучать ассемблер чтобы поморгать светодиодом, если на ЯВУ это можно сделать на порядки проще. Вирусы? Современный вирус это серьезная инженерная задача, не каждом профессиональном программисту по силу. Кракинг? Еще сложнее, сломать современную игрушку не так-то просто. Меня вообще поражают люди, считающие школьников идиотами и на этом основании пытающиеся заинтересовать их всякой древней унылой гадостью типа лого, мультивибратора на двух транзисторах, художественной гимнастики или походами выходного дня. В то время как школьники замечательно сами себя увлекают модостроительством, рентгеновскими трубками, пакруром и экстремальными походами по заброшенным золотым приискам.
А>Казалось бы хочешь работать с тинейждерами, так учитывай их интересы. Возьми image processing, data mining, signal processing или gamedev (если лепить не очередной платформер, а casual simulator типа bridge builder). Алгоритмы там несложные даже для семиклассника, особенно если с учителем, способным подобрать задачу по силам и объяснить как читать формулу. К реальности привзяка потрясающая, сразу понятно где это используется и зачем это нужно. Со стороны выглядит достаточно эффектно. И, главное, стимулирует дальше учиться математике, потому что нормальному любознательному школьнику интересно не только КАК но и ПОЧЕМУ.
Правильно! И я о том же: надо взять задачу — и ее делать. А язык и структуры данных выучатся в процессе.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Аноним, Вы писали:
А>> Самолеты папуасов не летают. Тогда как 99.9999% императивных програм работае и приносит пользу. Пользы же от 0.0001% программ, написанных на всей из себя такой правильной и красивой функциональщины человечество пока что не видело.
А>Гуглом пан не пользуется? Не знает что map/reduce это функциональщина в том же виде? На youtube пан lolcat video не смотрит, в жаббере не чатится, твиттер не читает? Или тоже не знает, что Erlang и Scala это функциональные языки?
Да что Вы всё упёрлись в ООП и функциональщину.
Почему про Prolog ни слова?
Re: ЯП для школьников углубленно изучающих программирование
От:
Аноним
Дата:
25.10.11 13:55
Оценка:
Здравствуйте, __lambda__, Вы писали:
___>ЗЫ: буду рад советам и размышлениям.
Довольно интересные размышления о выборе ЯП для студентов 1-го курса приведены в книге Touch of Class.
Кстати, недавно вышел ее перевод на русский язык.
Re: ЯП для школьников углубленно изучающих программирование
Здравствуйте, __lambda__, Вы писали:
___>1. Python — на базе него изучаем основные концепции (ветвления/циклы/функции). ___>2. С — изучаем низкоуровневое программирование в Unix среде. ___>3_1. С++ — высокоуровневое программирование (ООП, алгоритмы). ___>3_2. Java — высокоуровневое программирование (ООП, алгоритмы).
Кастрируешь деток лет на 10 и только спустя многие годы забивания гвоздей лбом некоторые из них дойдут то того, что действительно достойно изучения в программировании.
Re[5]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, __lambda__, Вы писали:
___>Т.к. они еще на олимпиадах будут учавствовать, а там выбор между C/C++ и Java.
Боюсь, что нет. На школьных международных олимпиадах, если я ничего не пропустил, до сих пор только Pascal/C/C++. Соответственно большинство олимпиад школьников, в том числе и российские, стараются придерживаться этого ограничения. Вот методические рекомендации, похоже, что никакой джавы даже на региональном уровне нет. Может быть сейчас что-то меняется, я могу быть не в курсе.
Re[6]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, _DAle_, Вы писали:
_DA>Боюсь, что нет. На школьных международных олимпиадах, если я ничего не пропустил, до сих пор только Pascal/C/C++. Соответственно большинство олимпиад школьников, в том числе и российские, стараются придерживаться этого ограничения. Вот методические рекомендации, похоже, что никакой джавы даже на региональном уровне нет. Может быть сейчас что-то меняется, я могу быть не в курсе.
Да, точно. Спасибо. Я спутал со студенческими олимпиадами.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re: ЯП для школьников углубленно изучающих программирование
Причем в этот момент не забудте объяснить детям, как представляется в памяти классы и функции и таблица виртуальных функций... Надеюсь когда С изучали как в памяти распологаются переменные структуры. Кстати при работе с функциями объяснили как передаются данные на стеке. Ксати когда изучали С, было бы не плохо показать на уровне ASM как это все работает. Кстати почему ASM x86/x64 не показываете?
Я бы сделал бы так — С -> ASM (на примере C+ASM) -> C++ -> JAVA
Re: ЯП для школьников углубленно изучающих программирование
Здравствуйте, __lambda__, Вы писали:
___>ЗЫ: буду рад советам и размышлениям.
1. Любой простой ЯП, можно паскаль, можно пайтон.
2. Ассемблер. Обязательно. В дебри влезать не надо, но человек должен уметь писать программу потенциально любой сложности на ассемблере, включая, например, рекурсивные функции. У многих после этого наступает просветление, даже если они до этого писали на С или паскале.
3. С. После ассемблера С идёт на ура, по сути получается тот же ассемблер, но гораздо удобнее.
4. С++. Шаблоны, исключения, STL оставляются на потом, по сути С с классами. Цель — объяснить что такое ООП, виртуальные методы, наследование и т.д.
5. Java как самый популярный современный ЯП. На этом месте может быть C#, зависит от предпочтений преподавателя.
6. Тут уже, имхо, школьники должны сами понять что им по душе и углубляться в тему, преподаватель может помогать. Желательно организовать совместную работу над одним проектом по 2-3 человека (обязательно — примерно одной силы). Показать систему контроля версий, билд-систему, багтрекер, в общем постараться организовать некий процесс разработки, похожий на настоящий. Дать какие то основы архитектуры, паттернов.