Здравствуйте, __lambda__, Вы писали:
___>Здравствуйте, boot, Вы писали:
B>>Не факт что Python вечен JS, хотя бы потому, что это самый распространенный интерпритатор. Правила объяснить просто, как в шахматах, но когда начинается игра невозможно оторваться.
___>Кстати вспомпил фразу одного из лекторов курса 6.001 (MIT) то ли Sussman, то ли Abelson. Он сказал, что программирование как шахматы, правила игры он может объяснить за минуты, а вот чтобы стать истинным мастером нужны годы тренировок. Так же и в программировании, синтаксис языка можно изучить за недели, а чтобы стать профессиональным программистом требуются годы практики.
___>Да, python не вечен. Да и JS не вечен, вон Google хочет заменить его Dart'ом. Не в этом суть, просто Python с методической точки зрения больше подходит для обучения основным концепциям.
Проблема в том, что Ваш изначальный список мне нравится, вот только времени может не хватить. Правда в списке отсутствует язык с утиной типизаций, а эта штука здорого шевелит мозг, что очень полезно в обучении человека разумного.
B>>>>Согласен, логика присутствует. Только как Вы объясните необходимость обертывания кода в класс, в задаче где ни одна сущность не повторяется дважды, либо можно спокойно использовать массив структур? Я не в курсе сколько у Вас времени на одного ученика, но на пару лет, думаю, хватит и двух языков, каких выбирать Вам, но поверьте, самое интересное в глубине.
___>Суть не в том, чтобы максимальное количество языков изучить. Кстати у меня и так получается пара языков Python & C/C++. Вот думаю просто, не добавить ли еще Java.
Здесь правила диктует олимпиада. Пускай диктует дальше.
Жизнеспособность прямо пропорциональна простоте!
Re[3]: ЯП для школьников углубленно изучающих программирован
От:
Аноним
Дата:
19.10.11 07:01
Оценка:
Здравствуйте, __lambda__, Вы писали: А>> Баловство все это. Logo, потом максимум Javascript.
___>Logo — они рассмеются мне в лицо.
В таком случае, прежде чем браться за какое либо программирование вообще, надо сначала заняться их общим воспитанием. Так же поможет старый добрый матан для тренировки интеллекта.
Re[5]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, __lambda__, Вы писали:
___>Здравствуйте, Ikemefula, Вы писали:
___>>>Просто во всем этом есть логика: ___>>>Python — основные концепции. ___>>>C — низкоуровневое программирование. ___>>>C++ — высокоуровневое программирование.
I>>Питон это уже высокоуровневое программирование. С++ это скорее средний уровень. С/С++ люди осваивают годами и то не могут побороть многие вещи, вроде указателей
___>Абсолютно согласен. Python безусловно высокоуровневый язык. Я был немного не точен. Исхожу в основном из целей обучения, оттуда и выбор языков: ___>
___> Основные концепции программирования (циклы, ветвления, функции) -> Python (меньше шума, простой синтаксис похожий на псевдокод) ___> Низкоуровневое программирование (программирование микроконтроллеров, ручное управление памятью) -> С (больше вариантов нет) ___> Высокоуровневое программирование (ООП, алгоритмы, структуры данных) -> С++ (думаю, не заменить ли на Java) ___>
ООП, алгоритмы лучше на Питоне — меньше шума например всякие автоматы-парсеры, основы ФП и тд это лучше на питоне будет.
Re: ЯП для школьников углубленно изучающих программирование
Здравствуйте, __lambda__, Вы писали:
___>ЗЫ: буду рад советам и размышлениям.
Изучайте сразу все. Школьники потом сами себе выберут то, что больше нравится. А пока важней показать разнообразие языков и средств. Пусть посоревнуются в решение одних и тех же задач на разных языках.
Душа обязана трудиться! (с) Н.Заболоцкий.
Re[2]: ЯП для школьников углубленно изучающих программирован
От:
Аноним
Дата:
19.10.11 18:30
Оценка:
Здравствуйте, _Obelisk_, Вы писали:
_O_>Изучайте сразу все. Школьники потом сами себе выберут то, что больше нравится. А пока важней показать разнообразие языков и средств. Пусть посоревнуются в решение одних и тех же задач на разных языках.
Вот это как раз нелепо. Разным задачам нужны разные языки.
Re: ЯП для школьников углубленно изучающих программирование
Здравствуйте, __lambda__, Вы писали:
___>ЗЫ: буду рад советам и размышлениям.
Дело не в языках, а в задачах, которые нужно программировать.
Под задачи — и инструмент подбирается...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: ЯП для школьников углубленно изучающих программирование
От:
Аноним
Дата:
20.10.11 06:14
Оценка:
Здравствуйте, __lambda__, Вы писали:
___>ЗЫ: буду рад советам и размышлениям.
Я через семь лет программирования пришел к тому, что императивное программирование — это непригодная для практического применения концепция, а ООП — шарлатанство и профанация. Ну и C++ — непригодный для программирования язык. На нем нет базовой поддержки элементарных механизмов построения программ: управления памятью, модульности, инкапсуляции.
Может не стоит портить детям мозг императивщиной и ООП, а начать с функциональных языков?
Ну и почему надо начинать с низкого уровня? Низкий уровень, конечно, необходим, но я видел очень много программистов, которых C/C++ превратили в безнадежных говнокодеров.
Re[2]: ЯП для школьников углубленно изучающих программирован
От:
Аноним
Дата:
20.10.11 07:28
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Я через семь лет программирования пришел к тому, что императивное программирование — это непригодная для практического применения концепция,
"Непригодная" — значит, вообще не работающая. Что противоречит наблюдаемым объективным фактам.
А> а ООП — шарлатанство и профанация.
Религия тоже шарлатанство и профанация, однако она тоже работает, и неплохо. И как замена психоаналитикам, и как набор техник медитации, и как социальный клапан для выпускания народного пара.
А> Ну и C++ — непригодный для программирования язык.
Стопицот тысяч написанных на C++ популярных и нужных приложений опровергают этот нелепый тезис.
А>Может не стоит портить детям мозг императивщиной и ООП, а начать с функциональных языков?
Без математики? Нельзя.
А>Ну и почему надо начинать с низкого уровня?
Потому, хотя бы, что это ИНТЕРЕСНО. Что, никогда не был школьником, что ли?
Re[2]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, Аноним, Вы писали:
А>Я через семь лет программирования пришел к тому, что императивное программирование — это непригодная для практического применения концепция, а ООП — шарлатанство и профанация. Ну и C++ — непригодный для программирования язык. На нем нет базовой поддержки элементарных механизмов построения программ: управления памятью, модульности, инкапсуляции.
А я через ... (сейчас посчитаю) ... примерно 15 лет программирования, тоже увлекся функциональным программированием, но не до такой крайней степени Любил (и кстати до сих пор люблю) Haskell за его чисто функциональную парадигму. Меня увлек очень сильно Lisp своим language oriented programming. Немного rule based programming на Prolog'е. А потом были Mercury/Oz/Erlang немного. И через пару лет постепенно начал возвращаться в real world, поначалу немного Python, затем чуточку Ruby и под конец я опять со своими старыми друзьями C & C++ с которыми дружил первые 15 лет.
А>Может не стоит портить детям мозг императивщиной и ООП, а начать с функциональных языков?
В начале своей педагогической карьеры тоже так думал. Хотел взять Scheme минималистичный, красивый язык. Но как показывает практика, большинству детей все же проще с императивной парадигмой.
А>Ну и почему надо начинать с низкого уровня? Низкий уровень, конечно, необходим, но я видел очень много программистов, которых C/C++ превратили в безнадежных говнокодеров.
А мы и не начинаем с низкого уровня, мы начинаем с Python'а, с базовых концепций.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re[2]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, LaptevVV, Вы писали:
LVV>Дело не в языках, а в задачах, которые нужно программировать. LVV>Под задачи — и инструмент подбирается...
Это утверждение верно только для профессиональных программистов. У нас первична цель обучения, а затем уже наиболее подходящий язык. Например, целью может служить изучение структур данных (списки, стеки, очереди, ...) и далее уже под эту цель выбирается язык программирования. По крайней мере я руководствуюсь такой логикой.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re: ЯП для школьников углубленно изучающих программирование
Здравствуйте, __lambda__, Вы писали:
___>Доброе(ый,ой) утро/день/вечер/ночи! (нужное подчеркнуть) ___>Организовал в школе клуб программистов, собрав ребят увлекающихся программированием. Собираемся изучать разные ЯП, технологии (3D/Web/etc). Примерная программа такая:
___>1. Python — на базе него изучаем основные концепции (ветвления/циклы/функции). ___>2. С — изучаем низкоуровневое программирование в Unix среде. ___>3_1. С++ — высокоуровневое программирование (ООП, алгоритмы). ___>3_2. Java — высокоуровневое программирование (ООП, алгоритмы).
___>вот тут я сомневаюсь, после C сразу перейти на Java или C++ ___>По идее переход от C к C++ кажется более логичным. Но Java дает сразу нормальное ООП. И Java проще чем С++. ___>В C++ можно отбросить все лишние сложности типа RTTI, exceptions, etc и рассматривать его как C с классами.
___>Для 3D будем использовать движок Panda3D или Ogre3D. Тут C++ в выигрыше. ___>Для Web будем использовать Django.
___>ЗЫ: буду рад советам и размышлениям.
Здравствуйте, __lambda__, Вы писали:
___>Здравствуйте, LaptevVV, Вы писали:
LVV>>Дело не в языках, а в задачах, которые нужно программировать. LVV>>Под задачи — и инструмент подбирается...
___>Это утверждение верно только для профессиональных программистов. У нас первична цель обучения, а затем уже наиболее подходящий язык. Например, целью может служить изучение структур данных (списки, стеки, очереди, ...) и далее уже под эту цель выбирается язык программирования. По крайней мере я руководствуюсь такой логикой.
Не... Во-первых, списки в С++ и списки в C# — две большие разницы...
Во-вторых, есть такая книжка: Идеальная разработка ПО http://www.ozon.ru/context/detail/id/7248898/
Там 7 глава называется: Почему так трудно научиться программировать.
Там есть статья: Роль контекстуализации.
В этой статье приводятся примеры заданий, которые выполняли начинающие программисты.
Например, задача перебора всех элементов массива рассматривалась в контексте преобразования всех пикселов графического отображения в оттенки серого.
Вот какие задачи я имел ввиду.
Мои студенты на ура воспринимают задание: написать программу, решающую головоломку "Миссионеры и людоеды".
Тут тебе и проблема представления данных, и метод полного перебора, и способ реализации — рекурсия или итерация.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, LaptevVV, Вы писали:
LVV>Не... Во-первых, списки в С++ и списки в C# — две большие разницы...
Да неужели... C#:
class Node
{
int a;
Node next;
}
class Node
{
int a;
Node * next;
};
Концептуально, разницы никакой не вижу. Я бы еще увидел разницу при реализации списка на чисто функциональном языке. Лень искать ссылку на работу Криса Окасаки.
LVV>Например, задача перебора всех элементов массива рассматривалась в контексте преобразования всех пикселов графического отображения в оттенки серого. LVV>Вот какие задачи я имел ввиду.
Ну для такой задачи, одинаково хорошо подходят C/C++/Java/C#/VB/...
Если и иметь в виду задачи, то я бы абстрагировался от конкретных задач и решил бы, чему должны эти задачи обучить и какой язык для этих задач больше подходит.
LVV>Мои студенты на ура воспринимают задание: написать программу, решающую головоломку "Миссионеры и людоеды". LVV>Тут тебе и проблема представления данных, и метод полного перебора, и способ реализации — рекурсия или итерация.
И какой язык для этого больше подходит?
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re[3]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, _Obelisk_, Вы писали:
_O_>>Изучайте сразу все. Школьники потом сами себе выберут то, что больше нравится. А пока важней показать разнообразие языков и средств. Пусть посоревнуются в решение одних и тех же задач на разных языках.
А> Вот это как раз нелепо. Разным задачам нужны разные языки.
Чтоб это понять надо попробывать порешать на разных языках. Речь ведь идет об обучении, а не о профессиональной деятельности. Да и в жизни подчас язык может определяться отнюдь не задачей, а мнением руководства.
Душа обязана трудиться! (с) Н.Заболоцкий.
Re[3]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, Аноним, Вы писали:
А>"Непригодная" — значит, вообще не работающая. Что противоречит наблюдаемым объективным фактам.
А она и работает не более чем молитвы влияют на здоровье. Карго культ и все такое. Папуасам тоже кажется что строя ВПП из бамбука они приманивают самолеты.
А> Религия тоже шарлатанство и профанация, однако она тоже работает, и неплохо. И как замена психоаналитикам, и как набор техник медитации, и как социальный клапан для выпускания народного пара.
О чем и речь, ООП такая же бесполезная фигня как и религия.
А> Стопицот тысяч написанных на C++ популярных и нужных приложений опровергают этот нелепый тезис.
То-то ко всем полезным и нужным либам на плюсах пишутся биндинги в нормальные языки потому что понять что там в плюсах наворочено и портировать нереально вообще.
А> Без математики? Нельзя.
Можно и нужно. Требовать для ФП математики это математический шовинизм. Для того чтобы писать в функциональном стиле математика не нужна. Ровно как для использования РБД не нужно знать реляционную теорию, а для написания парсера не нужно знать теорию формальных языков. Берешь и делаешь.
А> Потому, хотя бы, что это ИНТЕРЕСНО. Что, никогда не был школьником, что ли?
Вылезай уже из криокамеры. Это БЫЛО интересно а начале 90-х когда толковый школьник мог легко заткнуть за пояс вооруженного теорией туповатого препода. Современным школьникам это уже не интересно, поезд уже ушел. В чем прикол изучать ассемблер чтобы поморгать светодиодом, если на ЯВУ это можно сделать на порядки проще. Вирусы? Современный вирус это серьезная инженерная задача, не каждом профессиональном программисту по силу. Кракинг? Еще сложнее, сломать современную игрушку не так-то просто. Меня вообще поражают люди, считающие школьников идиотами и на этом основании пытающиеся заинтересовать их всякой древней унылой гадостью типа лого, мультивибратора на двух транзисторах, художественной гимнастики или походами выходного дня. В то время как школьники замечательно сами себя увлекают модостроительством, рентгеновскими трубками, пакруром и экстремальными походами по заброшенным золотым приискам.
Казалось бы хочешь работать с тинейждерами, так учитывай их интересы. Возьми image processing, data mining, signal processing или gamedev (если лепить не очередной платформер, а casual simulator типа bridge builder). Алгоритмы там несложные даже для семиклассника, особенно если с учителем, способным подобрать задачу по силам и объяснить как читать формулу. К реальности привзяка потрясающая, сразу понятно где это используется и зачем это нужно. Со стороны выглядит достаточно эффектно. И, главное, стимулирует дальше учиться математике, потому что нормальному любознательному школьнику интересно не только КАК но и ПОЧЕМУ.
Re[4]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, vladislaw, Вы писали:
V>Что же это за "школьники" такие? Неужели Django теперь знают? Лучше выбрать один язык и углубленно изучать на его примере алгоритмы и структуры данных, а сам язык имхо не столь важен.
В принципе, к 10-му классу я писал сайты на с CGI на C++ (под Watcom) и Perl и параллельно изучал Java — всё на машинах с 32Мб памяти и 266МГц процессорами. Так что всё ОК.
Sapienti sat!
Re[6]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, boot, Вы писали:
B>За обучение Си потомки Вам скажут спасибо. С++ все таки отнимает много времени на реализацию, удобен для больших проектов, он постоянно мурлычет "напиши класс". Сравните близкие к идеалу реализации простой задачи на Си и С++, больше всего вопросов посыпется из обзора Си-кода.
Как ни странно, они будут похожи с точностью до синтаксиса....
Sapienti sat!
Re: ЯП для школьников углубленно изучающих программирование
Здравствуйте, __lambda__, Вы писали:
___>Доброе(ый,ой) утро/день/вечер/ночи! (нужное подчеркнуть) ___>Организовал в школе клуб программистов, собрав ребят увлекающихся программированием. Собираемся изучать разные ЯП, технологии (3D/Web/etc). Примерная программа такая:
Всё отлично, только я бы выкинул из этой программы C++. Тем более если есть Java. Два раза рассказывать про ООП смысла нет (а кроме него из C++ ничего и не предполагается как я понял). Ну а возни с ним будет дофига. Так и представляю беготню от одного ученика к другому, забывшему поставить точку с запятой после объявления класса.
Re[4]: ЯП для школьников углубленно изучающих программирован
От:
Аноним
Дата:
21.10.11 09:24
Оценка:
Здравствуйте, Аноним, Вы писали:
А>>"Непригодная" — значит, вообще не работающая. Что противоречит наблюдаемым объективным фактам.
А>А она и работает не более чем молитвы влияют на здоровье. Карго культ и все такое. Папуасам тоже кажется что строя ВПП из бамбука они приманивают самолеты.
Самолеты папуасов не летают. Тогда как 99.9999% императивных програм работае и приносит пользу. Пользы же от 0.0001% программ, написанных на всей из себя такой правильной и красивой функциональщины человечество пока что не видело.
А>> Религия тоже шарлатанство и профанация, однако она тоже работает, и неплохо. И как замена психоаналитикам, и как набор техник медитации, и как социальный клапан для выпускания народного пара.
А>О чем и речь, ООП такая же бесполезная фигня как и религия.
Я же только что объяснил, что от религии есть огромная, неоценимая польза.
А>> Стопицот тысяч написанных на C++ популярных и нужных приложений опровергают этот нелепый тезис.
А>То-то ко всем полезным и нужным либам на плюсах пишутся биндинги в нормальные языки потому что понять что там в плюсах наворочено и портировать нереально вообще.
То-то 99% кода все равно пишется на плюсах, а не на "нормальных" языках, что еще и какие-то там "биндинги" писать надо.
А>Казалось бы хочешь работать с тинейждерами, так учитывай их интересы. Возьми image processing, data mining, signal processing или gamedev (если лепить не очередной платформер, а casual simulator типа bridge builder).