[Holywar] Какому языку учить в школе?

uncle17

У нас в ФТЛ до сих пор учат паскалю. Правильно, нет?

nikola1956

Java вроде бы не сложнее Pascal-я, зато на реальной работе востребована. С++ школьники не осилят, С — заскучают. Поэтому, наверно, Java нормальный вариант, но Python тоже хороший простой язык для изучения в школе.
В общем, считаю, что следует учить Java-е или Python-у, на выбор, кому что больше нравится.

Dasar

c# или python
ps
java тот же C#, только грязнее по синтаксису

nas1234

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

uncle17

и оператором цикла
ну вот например foreach есть не во всех языках

nas1234

да и похуй.
принципиально - не имеет значения.

serega1604

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

yroslavasako

а, ну тогда начинайте с хаскеля, там всё хорошо с коллекциями. И если человек не испорчен императивным программированием до этого, конецпции функционального будут ему близки и понятны, ведь они весьма похожи на обыкновенные математические формулы, которые он привык видеть. А то сейчас система обучения дважды ломает голову подрастающему поколению. Первый раз, когда учит менять местами значение двух переменных и определять переменную как адрес ящика, в котором может лежать что угодно, и поэтому x := y - это такая хитрая операция присваивания перекладывания из ящика в ящик, в противоположность формуле x = y, которая в привычной математике означает тождественность функций. А второй раз ломают голову, собственно, при изучении ФП, когда предлагают выбросить в окно все старые представления об императивном программировании и учат вместо декларации var использовать let и where.

Serab

А то сейчас система обучения дважды ломает голову
ты так говоришь "ломает голову", будто это что-то плохое

agaaaa

Я вот начинал с Basic и всем доволен.

yroslavasako

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

uncle17

Я вот начинал с Basic и всем доволен.
Я тоже еще до информатики спектрум поимел, ага
Бейсик тоже был первым. Потом паскаль в школе и в универе, а вот потом уже ПХП и Джаваскрипт.
А вот си никогда в жизни не учил и не знаю, а теперь вот на работе требуется - а не знаю

uncle17

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

uncle17

И, кстати, ребята, а как вы относитесь к регэкспам в школьной программе?
Понятно, что не все смогут. Но ведь те, кто смогут, будут уже тогда офигевать от "мощи"

serega1604

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

serega1604

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

yroslavasako

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

uncle17

Вообще да - их надо уже в продвинутых изучать, но я не знаю, что бы я сейчас делал в индустрии, не почитай в 2000 про них :)

margadon

в топку паскаль, надо учить С
а заскучают - пороть

Papazyan

На схеме надо учить.

katrin2201

Главное не язык, а усвоение всех уровней абстракции. Постепенное в идеале, а не так, что сразу в asm (eg лого/Scratch -> memory-managed -> unmanaged (pointers, etc) -> asm). А какой конкретно язык на данном уровне абстракции не так уж важно.
Регэкспы - адская ниша, что учится за один день. Если хочешь заинтересовать детей - ориентируйся на игрушки или что-то близкое. А заменять подстроки в строке на другие подстроки оставь нердам.

lord2476

в топку паскаль, надо учить С
+1

svetaslav212

В топку C с его == сравнением и бесконечными ошибками из-за этого. Pascal рулит для базового обучения.

margadon

нашли к чему придраться
зачем выстраивать лишнюю стену под названием "выучи ДРУГОЙ язык программирования чтобы сделать хоть что-то своими руками"? паскаль же мёртвый язык, на нём разве что на военной кафедре пишут всерьёз... (что-то мне подсказывает что до сих пор пишут :D )

apl13

паскаль же мёртвый язык, на нём разве что на военной кафедре пишут всерьёз...
Навскидку: http://en.wikipedia.org/wiki/FL_Studio

margadon

эмн. ты хочешь сказать, что он написан на дельфях? аминь

svetaslav212

Очевидно, что нужно изучать не столько язык, сколько принципы. Принципы проще всего изучать на дружественном к человеку Паскале (специально надо сказать созданном для этой цели — обучения чем на дружественном к компилятору C.

markyzz

имхо, норм вариант:
бейсик -> паскаль -> си-пи-пи

margadon

а ещё неплохо бы экономить ресурсы мозга учащихся, и не изучать что-то, что конечно может "принципы" и покажет, но само по себе - бесполезный балласт. Хотя да, там := , это прям решает :)
Давайте преподавать python, он странноватый язык, чтобы быть первым, но зато достаточно выразителен и на нём можно беспрепятственно продолжить программировать и дальше. И нелогичностей в синтаксисе в нём меньше чем в С

luna89

Надо учить паскалю. Но turbopascal надо оставить в прошлом. Нужна простая ide с компиляцией на лету, подсвечиванием ошибок в коде и лайвкодингом. Программировать надо не преобразование текста из stdin в stdout (это скукота, непонятная школьникам а графику. Также надо по максимуму использовать идеи Брета Виктора.

nemec2707

В топку C с его == сравнением и бесконечными ошибками из-за этого.
А что, у кого-то реально с этим бесконечные ошибки? Я не так много прогаю, но за последние года три не припоминаю, чтобы были подобные проблемы с этим оператором

nemec2707

Очевидно, что нужно изучать не столько язык, сколько принципы. Принципы проще всего изучать на дружественном к человеку Паскале (специально надо сказать созданном для этой цели — обучения чем на дружественном к компилятору C.
У меня в СУНЦЕ информатике и программированию учили два препода, один хуевее другого - Гущин и Шкаф, учили на паскале. Никакого интереса этот предмет в их исполнении не вызывал, программирование я ненавидел, и даже сдал выпускной тест при помощи Artmoney) Потом на первом курсе физфака у нас вел C++ какой-то бодрый толковый молодой преподаватель, и я с удивлением обнаружил, что прогать интересно и легко для меня, тогда и заложился фундамент моей нынешней профессии и любимиого дела)
Это я всё к тому, что, как мне кажется, решающую роль в эффективности обучения детей основам программирования играет компетенция и личность преподавателя, а не язык программирования.

apl13

эмн. ты хочешь сказать, что он написан на дельфях? аминь
Ну таки да.
Даже больше: и не он один.

svetaslav212

Половина того, что учат в школе — балласт для жизни. В школе учатся не поэтому.

svetaslav212

что, у кого-то реально с этим бесконечные ошибки?

У только начнающих — постоянно. Это мешает усвоению сути программирования.

margadon

не мешает это усвоению сути программирования
мешают недалёкие преподы, вдалбливающие высосанные из пальца догмы
к тому же мне кажется очень вредным приучать для сравнения писать a=b в то время как в самых популярных языках это означает присваивание. потом эти же люди будут по привычке ошибаться в обратную сторону, а это куда хуже
паскаль надо сжечь, С рулит

6yrop

Нужна простая ide с компиляцией на лету, подсвечиванием ошибок в коде и лайвкодингом.
пост про ide от :ooo:

6yrop

Нужна простая ide с компиляцией на лету, подсвечиванием ошибок в коде и лайвкодингом.
для паскаля такая ide есть?

svetaslav212

Люди, которые уже усвоили, чем сравнение отличается от присваивания, не будут ошибаться с любым языком. Мы же говорим о тех, кто программировать еще вообще не умеет. И вот им-то и будет привычным сравнение простым =, а присваивание уже как угодно можно обозначать, все равно с этим термином они сталкиваются впервые. Кроме того, человеческие слова begin-end гораздо понятнее безликих скобок.

apl13

к тому же мне кажется очень вредным приучать для сравнения писать a=b в то время как в самых популярных языках это означает присваивание.
В каких, например, в естественных?

margadon

в естественных?
в противоестественных, очевидно же

viktor954

для FreePascal есть http://wiki.lazarus.freepascal.org/Screenshots
и плагин для Эклипса.
ИМХО, freepascal хорош (и может зинтересовать школьников) тем , что позволяет писать подо что угодно — хочешь — Android или iOS, хочешь — Win64...

kill-still

Вы отстали от жизни. На делфи уже давно можно писать и под никсы, и под макось/ios, и ведроид.

viktor954

только при идентичном IDE freepascal бесплатен, а Delphi стоит что-то в районе 100к+, как я понимаю:
http://store.embarcadero.ru/catalog/rubric/24

kill-still

А как там с гуями в фрипаскале? Есть возможность иметь один и тот же код на разных платформах?
И что со всякими генериками/замыканиями/анонимными классами и пр? (вопрос без иронии)

viktor954

фрипаскаль для того и придумывался, чтобы использовать один и тот же код на всех платформах
GUI: http://en.wikipedia.org/wiki/FpGUI ну или в http://en.wikipedia.org/wiki/Lazarus_%28IDE%29#Features
Ман по кроссплатформенной разработке: http://wiki.freepascal.org/Multiplatform_Programming_Guide
дженерики:
http://wiki.freepascal.org/Generics
фичи Delphi, отсутствующие в FPC:
http://wiki.freepascal.org/delphi_language_features_which_fp...

Dasar

лямбды в паскале (и в дельфи) уже появились?

luna89

лямбды в паскале (и в дельфи) уже появились?
Школьникам они не нужны

Dasar

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

luna89

для паскаля такая ide есть?
Если бы мне сказали учить школьников, я бы поискал компилятор паскаля в js и сделал из него онлайн IDE, которая бы работала как в статье на которую я ссылался - слева код, справа картинка, как только меняешь код, сразу видишь новую картинку. Для тех объемов кода, которые напишет школьник (20 строк максимум подсветка ошибок делается просто - на каждый ввод символа с нуля компилим код, сообщения от компилятора используем для подчеркивания места с ошибкой.

Dasar

Для тех объемов кода, которые напишет школьник (20 строк максимум
это какие-то убогие школьники

kill-still

подсветка ошибок делается просто - на каждый ввод символа с нуля компилим код, сообщения от компилятора используем для подчеркивания места с ошибкой.
Бля, есть же Ace! :facepalm:

luna89

Бля, есть же Ace!
Но при чем тут компиляция паскаля?

kill-still

Он сам сообщение от компилятора распарсит и подчеркнёт что надо.
Очень удобная штука.

yroslavasako

А как там с гуями в фрипаскале? Есть возможность иметь один и тот же код на разных платформах?
ага. Я вот собирал doublecommander, он писан на фрипаскале, при этом поддерживает на выбор гном и кде.

asvsergey

Почему паскаль то? Если иностранные языки хочешь учить надо с древнегреческого начинать, так что ли? Где искать разнообразные примеры хорошего кода на паскале? Язык конечно хорош, но не лучше ли выбрать что то более широко обсуждаемое и используемое?

salamander

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

svetaslav212

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

yroslavasako

Почему паскаль то?
Напомню тебе, я сам болею за хаскел, а про паскаль только сказал, что гуи там есть и я его щупал.
Если иностранные языки хочешь учить надо с древнегреческого начинать, так что ли? Где искать разнообразные примеры хорошего кода на паскале?
Вообще, с примером хорошего кода на древнегреческом как раз проблем нет. Ну и вообще, если бы мне сказали, что в 20 лет я буду знать десять языков, я бы проголосовал за изучение греческого и латинского как основы, с которой проще доучивать прочие европейские языки.
Язык конечно хорош, но не лучше ли выбрать что то более широко обсуждаемое и используемое?
Широко обсуждаемое и используемое актуально не для школьного образования, а для средне-специального.

svetaslav212

Хоть для общего развития, хоть для подготовки профессионалов с нуля все равно придется учить алгоритмизации задачи, рассказывать о базовых элементах алгоритмов. Разумеется, на примерах сразу нужно закреплять пройденное, и чем ближе будет язык к естественному, тем проще будет ученикам вникнуть в суть.

asvsergey

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

asvsergey

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

svetaslav212

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

asvsergey

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

svetaslav212

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

asvsergey

Ruby, Python, JS, VB, Lua и еще несколько, выбирай что хочешь.
Любой из них сравнительно лего освоить и на них многие школьники могут программировать что то инетерсное, а не только сортировки и бинарные поиски.

svetaslav212

Вообще-то школьники не программируют никакие сортировки и поиски, а компиляция простых программ у Паскаля настолько быстрая, что разница со скриптами и не ощущается — жмешь Run и поехали.

khachin

Ruby, Python, JS, VB, Lua и еще несколько, выбирай что хочешь.
Языки легкие для освоения, да. Но как на них разъяснить ученикам о типах данных? Зачем мы в столбик делим на 2, 8, 16 и выделяем остатки? Курс информатики — это не только язык.

asvsergey

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

asvsergey

Языки легкие для освоения, да. Но как на них разъяснить ученикам о типах данных? Зачем мы в столбик делим на 2, 8, 16 и выделяем остатки? Курс информатики — это не только язык.
Ну тебе в школе говорили что из отрицательных чисел брать корень нельзя, а потом оказалось что можно и как то это разъяснили.

svetaslav212

простенькую игру, или сайт, или бота к игре,
:facepalm:
Гаматься на компе — зло. От этого надо отучать с детства.

yroslavasako

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

svetaslav212

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

svetaslav212

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

Anna74

Я вот начинал с Basic и всем доволен.
плз прокомментируй вот это высказывание

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

svetaslav212

Просто Дейкстра ненавидел GOTO.

yroslavasako

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

apl13

Ruby, Python, JS, VB, Lua и еще несколько, выбирай что хочешь.
Это все хлам.
Лого — выбор поколений! :ole:

salamander

Вроде довольно очевидно что базовый курс для всех, а кому интересно факультативы или специализированные школы, как и с остальными предметами.
:confused:
Заявление, что "базовый курс для всех" совершенно не дает нам ответ на вопрос, а зачем мы его преподаем, какова цель. Не, ну если единственная цель состоит в том, чтобы быть "для всех" - то тогда ничего преподавать не нужно (а то еще кто-нибудь что-нибудь не поймет). Достаточно просто в расписание поставить и заставить ходить. Ну или разрешить гамать в машзале - сами будут ходить с удовольствием.

nemec2707

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

svetaslav212

Мб чтобы выявить тех, кому этот предмет интересен? Или иначе - дать детям попробовать себя в еще одной области деятельности, чтобы они могли найти себя в жизни.
Фейл. Основной вопрос здесь — обучение алгоритмизации и разбиению задач на этапы.

kill-still

а форточки как же? :(

viktor954

Форточки — без проблем:
http://sourceforge.net/projects/doublecmd/files/DC%20for%20W...

salamander

Мб чтобы выявить тех, кому этот предмет интересен? Или иначе - дать детям попробовать себя в еще одной области деятельности, чтобы они могли найти себя в жизни.
Интересный конечно подход, но школа у нас профориентацией не занимается (не знаю, хорошо это или плохо, но уж как есть).
Вариант гораздо более перспективен: обучить навыкам формализации решения задачи в виде последовательности элементарных действий (далее "навык программирования"). Из особенностей этого навыка:
1. Это именно навык, не знания. Достигается практикой и тренировкой.
2. Он слабо зависит от языка программирования. Именно поэтому первый язык программирования человек учит с таким трудом, а начиная со второго - быстро и легко.

agaaaa

Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации
Я уважаю Дейкстру как учёного, но подобные фразы без сопутствующих данных имеют 0 смысла.

kill-still

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

kill-still

Да имхо Дейкстра просто путает корреляцию со следствием. :)

PooH

надо учить С
C - такой язык, что книжки "Учимся прогать на С за 21 день" должны в себя включать полную перепечатку стандарта С89 (С99) с комментариями и примерами.
В С грабли разложены со средней плотность 2 грабли на строчку кода.
Лучше опустить С и сразу начинать с С++ - так граблей поменьше и наступаешь на них только в профессиональной разработке.

Dmitriy82


плз прокомментируй вот это высказывание

Дейкстра :
Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации
Я тоже начинал с бейсика, правда быстро перешёл на паскаль. Моя самая сложная (и вероятно самая длинная) программа на бейские - симулятор игры жизнь. Не жалею о и не раскаиваюсь в таком старте. Со многими ключевыми понятиями я познакомился именно в контексте бейсика (композиция, абстракция, корректность, документация хотя и не подозревал тогда что они заслуживают самостоятельных названий.
Я конечно заперт в рамках своего мировоззрения, но мне не кажется что мой мозг был покалечен бейсиком.
Не исключаю что написание большой программы на бейсике, либо старт с языка, который слишком много "прощает" (типа джаваскипта могут быть вредны.

katrin2201

dijkstra>> Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию.
dijkstra>> Как потенциальные программисты они подверглись необратимой умственной деградации
> плз прокомментируй вот это высказывание
Это высказывание датировано 1975 годом. За почти 40 лет экосистема, ммм, как бы это сказать, немного видоизменилась. Предполагаю, что с точки зрения тогдашнего Дейкстры, существенная доля сегодняшних профессиональных разработчиков "mentally *retarded* beyond hope of regeneration".
Другими словами, это он еще среднестатистического кода на php не видел.

evolet

Лучше опустить С и сразу начинать с С++ - так граблей поменьше и наступаешь на них только в профессиональной разработке.
тостовато набрасываешь

lord2476

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

yroslavasako

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

pilot

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

tokuchu

Лучше не учить школьников быть инвалидами, поэтому только питон.
Правильно, пусть будут инвалидами на самом деле!

pilot

Правильно, пусть будут инвалидами на самом деле!
Не, если они хотят быть инвалидами, то пусть выберут сами, осознанно, уже имея представление о программировании.

Kira

Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации
бейсик времен дейкстры был совсем убог: goto, go sub, глобальные переменные, номера строк без отступов и прочий ассемблер кобол. Современному бейсику вполне можно учить:
1. ветвление, циклы итд вполне окей.
2. штуки типа IF...ELSE..END IF, SUB...END SUB ближе к человеческому языку, чем фигурные скобки
3. Область действия переменных
4. Классы
5. В VB.NET всякие лямбды прочая функциональщина.
6. IDE, которое будет расставлять им табы, чтобы они не писали код стенкой.
7. Когда станут офисным планктоном смогут скриптик в экселе написать
Тех кто умный можно отдельно учить сям (++ или # яве или хаскелю.
ps: моим первым языком было ЛОГО. Для младшеклассников тоже вполне вариант был, но не знаю как оно там сейчас.

svetaslav212

штуки типа IF...ELSE..END IF, SUB...END SUB ближе к человеческому языку, чем фигурные скобки
End без begin — тупо, поэтому только Pascal!

0000

Я бы предпочел с Python начинать.
Имеется достаточно много либ, чтобы и GUI слепить и что-то системное.
Lua мне больше всего нравится, но вот с либами у него беда.

kill-still

Lua мне больше всего нравится, но вот с либами у него беда.
У него далеко не только с либами беда. :)

u7lya77

c/c++ причем в qt

ramsit

Очевидно, язык для обучения детей должен удовлетворять минимум двум требованиям:
1. низкий порог вхождения.
Чтобы начать писать осмысленные программы как можно раньше, после объяснения базовых концепций типа 'переменная', 'функция', 'возвращаемое значение'. (В принципе, это можно доходчиво объяснить за одно-два занятия)
Кто советует низкоуровневые языки типа Си - вы серьезно собираетесь объяснять детям, как устроена память, что такое указатели и разыменование? без этого не написать ничего сложнее холлоу ворлд
Кто советует объектно-ориентированные языки (по типу message-passing - C++, C#, java etc) - как, например, объяснить ребенку, что такое класс и чем он отличается от объекта класса, или например почему метод принадлежит классу, а не метод выполняется с объектом этого класса? (это кстати далеко не каждый взрослый погромист понимает)
В принципе, чем меньше в языке требуется понять трудных понятий, чтобы писать более-менее сложные программы (не хеллоуворлды тем более он пригоден для обучения детей.
2. чтобы было интересно
Дети почти не знают слово 'надо', поэтому нужен хотя бы минимальный интерес к предмету, чтобы усвоить что-то.
Еще, современные школоло поголовно страдают дефицитом внимания, не могут концентрировать внимание даже на небольшой срок.
Значит, опять же, язык должен позволять относительно просто и безболезненно, без усвоения сложных концепций, писать программы, делающие интересные и красивые вещи (см п.1)
Плюс к тому, это значит, что язык должен быть очень лаконичным и с неперегруженным синтаксисом.
Очевидно, скриптовые языки в стопицот раз более лаконичны, чем компилируемые си-подобные. Пока ребенок пишет (точнее переписывает) 10 строчек кода на C++ или java вместо 1-2 команд питона, ему надоест и внимание переключится на что-то другое.
Короче, под эти требования неплохо подходят вышеупомянутые луа и лого для делей помладше, и вышеупомянутый питон (и неупомянутая схема) для детей постарше.
Все остальное - потом, когда дети научатся алгоритмически мыслить и строить программы.

stm5872449

ps: моим первым языком было ЛОГО. Для младшеклассников тоже вполне вариант был, но не знаю как оно там сейчас.
Моим первым языком тоже был ЛОГО, и он вполне мог оказаться последним. В 7 (или 8?) классе возиться с какой-то сраной черепахой уже казалось издевательством. :)

Kira

В третьем классе было норм ^.^

Dasar

с точки обучения, имхо, статически-типизированные языки полезнее. Потому что они требуют отслеживать в уме "потоки"-кода, и вычислять какой тип будет после какой операции.
на вскидку, выделяется четыре направления, которые могут быть интересны и полезны детям:
- автоматизация своих операций
- приложения для телефона
- верстка rich-текста
- web-приложения
имхо, первое стоит учить на примере питона
второе на примере c#
верстка - html + css
веб-приложение - это уже скорее факультатив из-за того, что там появляется еще обязательный js, который, имхо, неудобен для обучения.
хз, что удобнее для обучения C# или Питон на серверной стороне веб-приложений. У каждого есть свои плюсы и минусы.
начинать, имхо, стоит с простенького приложения для телефона (какая-нибудь мини-игра). Из этого легко сделать что-то, что ребенок сможет показывать другим и гордиться этим, что здорово повышает мотивацию.

ramsit

с точки обучения, имхо, статически-типизированные языки полезнее. Потому что они требуют отслеживать в уме "потоки"-кода, и вычислять какой тип будет после какой операции.
отслеживать потоки - последовательность выполнения операций, нужно учить независимо от типизации, это и есть алгоритмическое мышление. Имхо если и объяснять типизацию, то чуть позже и на самом базовом уровне. Не будешь же ребенку объяснять, чем float отличается от int, и почему 3.0 это float, а не int. А на базовом уровне, то объяснить, чем отличаются число, строка, список или массив, вполне можно на примере языка с любой типизацией.
на вскидку, выделяется четыре направления, которые могут быть интересны и полезны детям:
- автоматизация своих операций
- приложения для телефона
- верстка rich-текста
- web-приложения
имхо, первое стоит учить на примере питона
второе на примере c#
верстка - html + css
веб-приложение - это уже скорее факультатив из-за того, что там появляется еще обязательный js, который, имхо, неудобен для обучения.
хз, что удобнее для обучения C# или Питон на серверной стороне веб-приложений. У каждого есть свои плюсы и минусы.
Ну раз тут спрашивают про языки программирования, то верстка веб и текста это оффтопик, хотя конечно этому обязательно надо учить.
Имхо, надо показывать задачки по всякому моделированию, генерации изображений, написанию мозгов к игрушечным роботам и т.д. Интересные вещи обычно сложные, можно написать программу самому, а детям предложить изменять/усложнять ту ее часть, которая делает самое интересное.
Например, написать движок для битвы роботов и предложить детям прописать поведение робота, потом можно устроить турнир. Имхо отличная идея, чем занять детей на полгода-год.
Веб-приложения - давайте избавим веб от детей! :)
Это даже не факультатив. js - имхо пример языка, который нужно держать как можно дальше от детей из-за его несистематичности (см http://wtfjs.com). Сначало нужно научить дисциплине кодинга на языках, которые не прощают много ошибок.
Короче, веб-программирование для обучения детей имхо табу.
начинать, имхо, стоит с простенького приложения для телефона (какая-нибудь мини-игра). Из этого легко сделать что-то, что ребенок сможет показывать другим и гордиться этим, что здорово повышает мотивацию.
Вот это круто, да, но тут большую часть нужно будет сделать самому, а ребенку оставить только то, что он будет видеть непосредственно на экране.

yroslavasako

Кто советует низкоуровневые языки типа Си - вы серьезно собираетесь объяснять детям, как устроена память, что такое указатели и разыменование? без этого не написать ничего сложнее холлоу ворлд
нам как-то объяснили.

yroslavasako

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

Dasar

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

ramsit

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

ramsit

Кто советует низкоуровневые языки типа Си - вы серьезно собираетесь объяснять детям, как устроена память, что такое указатели и разыменование? без этого не написать ничего сложнее холлоу ворлд
нам как-то объяснили.
Не, ну я охотно верю, что вам объяснили, и что некоторые, включая тебя, даже поняли. но:
1. ты не все
2. это было давно
3. и, вероятно, в старших классах
сейчас средний школьник хорошо если решает квадратное уравнение к 11-му классу.

apl13

и неупомянутая схема
после объяснения базовых концепций типа 'переменная', 'функция', 'возвращаемое значение', 'замыкание', 'продолжение', 'задержка', 'конечное дерево синтаксиса'
Я только "за". Сразу учить хорошим языкам, чтобы потом джава-макаки вымерли как класс, не сочтите за каламбур. Моисей, отведи нас в пустыню.

apl13

В 7 (или 8?) классе возиться с какой-то сраной черепахой уже казалось издевательством. :)
Вот так и гибнут падаваны, не доучившись до джедаев. :LSVADER:

ramsit

'продолжение', 'задержка', 'конечное дерево синтаксиса'
Да, в схеме эти концепции есть (и кстати довольно удобно объясняемы в схеме но даже в великом и могучем SICP вполне обошлись без них для объяснения приличного количества задач. Тем более для обучения азам алгоритмического мышления они побоку.
Реальная проблема схемы для обучения в малом количестве батареек и подключаемых биндингов, с которыми можно делать красивости.
Вообще, имхо, для первого языка в школе питон один из лучших вариантов. даже первый курс МИТа уже давно перевели на питон со схемы.

yroslavasako

3. и, вероятно, в старших классах
а имеет смысл преподавать программирование раньше?

svetaslav212

Имеет.

yroslavasako

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

svetaslav212

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

yroslavasako

Ага. Примитивная рекурсия - это проще чем предел последовательности.

svetaslav212

Очевидно, что начинать надо не с нее.

lord2476

сейчас средний школьник хорошо если решает квадратное уравнение к 11-му классу.
зачем этим школьникам программирование?

ramsit

зачем этим школьникам программирование?
В нашем регионе (владимирская область) это уровень >95% школьников. Три года занимаюсь репетиторством с детьми из разных школ, не встречал ни одного старшеклассника, который может самостоятельно думать, простейшие вещи усваивают со скрипом. Когда я был школолом, это был уровень двойки, то что сейчас тройка-четверка.
Причем это именно о старшеклассниках, более мелкие дети схватывают то же самое намного легче и пытаются думать. Могу сделать вывод, что современная средняя школа отучает думать и интересоваться чем-либо, короче калечит детей. Надо что-то делать, не? Старшеклассников исправить уже малореально, но почему бы не поучить мелких детей проганию на доступном им уровне, заинтересовать их чем-ть?

svetaslav212

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

ramsit

Ну так только таким репетитор и нужен обычно.
Распространенное заблуждение.
Щас с репетитором занимаются поголовно все старшеклассники (де-факто платное образование т.к. самостоятельно к ЕГЭ фиг подготовишься, нужна систематичность. В школе вся подготовка к ЕГЭ в школах у нас сводится к тому, что раз в две недели дают вариант, потом его проверяют, почти без разбора.
Так что с репетиторами занимаются и отличники, за оочень редким исключением. Это не только мои наблюдения, у меня есть довольно подробная статистика на этот счет (школы де-факто уже сильно интегрированы с разными репетиторскими конторами доп.образования)

salamander

1. низкий порог вхождения.
Чтобы начать писать осмысленные программы как можно раньше, после объяснения базовых концепций типа 'переменная', 'функция', 'возвращаемое значение'. (В принципе, это можно доходчиво объяснить за одно-два занятия)
Полностью поддерживаю.
Кто советует низкоуровневые языки типа Си - вы серьезно собираетесь объяснять детям, как устроена память, что такое указатели и разыменование? без этого не написать ничего сложнее холлоу ворлд
Use Pascal, Luke!
Собственно очень низкий порог вхождения как раз и делает этот довольно бесполезный и не очень удобный в реальном программировании язык столь привлекательным для обучения. Даже понятие "функция" можно отложить на потом, и просто с переменными уже можно что-то писать простенькое.
Плюс завидно низкое количество неявностей (включая неявное преодразование типов, что не очень удобно при реальном программировании но здорово помогает не выстрелить себе в ногу на начально уровне).
Плюс к тому, это значит, что язык должен быть очень лаконичным и с неперегруженным синтаксисом.
Очевидно, скриптовые языки в стопицот раз более лаконичны, чем компилируемые си-подобные. Пока ребенок пишет (точнее переписывает) 10 строчек кода на C++ или java вместо 1-2 команд питона, ему надоест и внимание переключится на что-то другое.
А вот с этим я сильно не согласен. Лаконичность питона достигается за счет большого числа синтаксических конструкций. То есть это программа на питоне лакончиная, а вот синтаксис (то есть его описание) - как раз наоборот очень раздутое. В результате ты бросаешь школьников против такого большого, сложного и необъятного для них языка.
Опять таки - паскаль. Минимум синташугара, все конструкции реально перечислить за очень небольшое число занятий.
В качестве итога. Если цель обучения программированию состоит в том, чтобы всех подряд школьников научить основам "алгоритмического мышления" (или "навык программирования" как я его назвал ранее) - то паскаль отличный выбор.

ramsit

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

yroslavasako

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

svetaslav212

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

svetaslav212

Ну так и интегралами пользоваться можно, не зная понятия предела.
Это если цель — выучить таблицы интегралов, а не смысл понятия интеграла.

apl13

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

yroslavasako

Это если цель — выучить таблицы интегралов, а не смысл понятия интеграла.
то же самое я могу сказать и про программирование.

apl13

Минимум синташугара, все конструкции реально перечислить за очень небольшое число занятий.
Не, ну схема-то вне конкуренции тут.

ramsit

Три года занимаюсь репетиторством с детьми из разных школ, не встречал ни одного старшеклассника, который может самостоятельно думать
Можно я переформулирую? :4u:
Окей, а ты знаешь много детей, которые не учатся в общеобразовательных школах?
Я конечно понимаю, тут у нас мэгэу, илита, народ позаканчивал всяких сунцов, лицеев и спецшкол, олимпиадники бывшие. Но блин, речь о самых обычных школоло, когда детям поголовно насрать на учебу, а учителям насрать на детей, и все "вдруг" спохватываются, что через полгода-год надо сдавать ЕГЭ, а мало кто понимает программу седьмого класса.
Я же сказал выше, что видел статистику результатов ЕГЭ по школам города и района, кто на что учился в школе, кто занимался с репетитором, кто на сколько баллов написал.
Сними розовые очки, это реалии нашей средней школы.

apl13

Я просто предположил, что у тебя biased sampling, а ты с чем-то споришь.

yroslavasako

когда детям поголовно насрать на учебу
может это не проблема школ?

Dasar

Лаконичность питона достигается за счет большого числа синтаксических конструкций.
имхо, это миф что малое кол-во синтаксических конструкций + их комбинации учить проще, чем большое кол-во синтаксических конструкций.
Во-первых, если было бы верно обратное, то Форт, BrainFuck и т.д. учить было бы проще всего.
Во-вторых, мозг(как всякая нейронная сеть) лучше занимается задачами распознавания, чем комбинаторикой. Мозг умеет с легкостью распознавать десятки тысяч плохо формализуемых понятий, но при этом ему с трудом удается перемножить два двухзначных числа (а это всего лишь комбинация из 4 элементов)
ps
Конечно, же так же верно, что не всякий большой набор синтаксических конструкций хорош для запоминания. Для того, чтобы его было легко учить - он должен соответствовать куче требований.

pilot

По-моему несправедливо что модератор не игнорится в модерируемом разделе.

Dasar

напиши скрипт! или страдай )

svetaslav212

то же самое я могу сказать и про программирование.

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

6yrop

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

zlod

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

6yrop

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

Marinavo_0507

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

zlod

Ну вот мне как пресловутому человеку в софтверной индустрии удобно, когда взаимодействующие со мной люди (дизайнеры, писальщики ТЗ) понимают, что такое программирование. Или там сисадмину проще взаимодействовать с компьютерно грамотными бухгалтерами. То есть эти люди не будут, конечно, писать программы, но их понимание компьютеров и программирования положительно скажется на индустрии в целом.

yroslavasako

может тогда им преподавать компьютерную грамотность, а программирование оставить для старших классов?

Kira

да лучше сразу на старшие курсы, чо уж.

6yrop

Ну вот мне как пресловутому человеку в софтверной индустрии удобно, когда взаимодействующие со мной люди (дизайнеры, писальщики ТЗ) понимают, что такое программирование.
как говорил наш семинарист по математике, иллюзия понимания хуже непонимания

nawok

Как вариант, ProcessingJS.

uncle17

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

6yrop

Как вариант, ProcessingJS.
как там Go To Definition? Если нет, то в топку.
И да, везде, где нет Go To Definition не подходят для обучения компьютеру, ибо противоречит самой сути компьютера.

ramsit

везде, где нет Go To Definition не подходят для обучения компьютеру, ибо противоречит самой сути компьютера.
Пост для сбора минусов?

luna89

Как вариант, ProcessingJS.
Я в этом треде ссылался на статью Learnable Programming, которая как раз критикует ProcessingJS.

Vladu

Какому языку учить в школе?
Вот зародыш такого языка.
http://quorumlanguage.com/evidence.php
http://dx.doi.org/10.1145/2534973
Recent studies in the literature have shown that syntax remains a significant barrier to novice computer science students in the field. While this syntax barrier is known to exist, whether and how it varies across programming languages has not been carefully investigated. For this article, we conducted four empirical studies on programming language syntax as part of a larger analysis into the, so called, programming language wars. We first present two surveys conducted with students on the intuitiveness of syntax, which we used to garner formative clues on what words and symbols might be easy for novices to understand. We followed up with two studies on the accuracy rates of novices using a total of six programming languages: Ruby, Java, Perl, Python, Randomo, and Quorum. Randomo was designed by randomly choosing some keywords from the ASCII table (a metaphorical placebo). To our surprise, we found that languages using a more traditional C-style syntax (both Perl and Java) did not afford accuracy rates significantly higher than a language with randomly generated keywords, but that languages which deviate (Quorum, Python, and Ruby) did. These results, including the specifics of syntax that are particularly problematic for novices, may help teachers of introductory programming courses in choosing appropriate first languages and in helping students to overcome the challenges they face with syntax

Ivan8209

> Я конечно понимаю, тут у нас мэгэу, илита, народ позаканчивал
> всяких сунцов, лицеев и спецшкол, олимпиадники бывшие.
> Но блин, речь о самых обычных школоло
Вообще-то, изначальный вопрос стоял про саратовский ФТЛ,
это уровень значительно повыше СУНЦа. По крайней мере, был.
---
"Юношеству занятий масса.
Грамматикам учим дурней и дур мы."

Ivan8209

> 2. чтобы было интересно
> Дети почти не знают слово 'надо', поэтому нужен хотя бы
> минимальный интерес к предмету, чтобы усвоить что-то.
> Значит, опять же, язык должен позволять относительно просто и
> безболезненно, без усвоения сложных концепций, писать программы,
> делающие интересные и красивые вещи
Я всё-таки повстречал людей, которые занимаются обучением
программированию десяти-двенадцатилетних. Они утверждают,
на основании своего опыта, что Scratch очень хорош.
---
"А я обучался азбуке с вывесок,
листая страницы железа и жести."
Оставить комментарий
Имя или ник:
Комментарий: