Доброе(ый,ой) утро/день/вечер/ночи! (нужное подчеркнуть)
Организовал в школе клуб программистов, собрав ребят увлекающихся программированием. Собираемся изучать разные ЯП, технологии (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.
ЗЫ: буду рад советам и размышлениям.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re: ЯП для школьников углубленно изучающих программирование
От:
Аноним
Дата:
18.10.11 07:42
Оценка:
Здравствуйте, __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.
Ни фига себе у вас в школе "увлекающиеся программированием"!
Или это вы сильно увлеклись?
Re: ЯП для школьников углубленно изучающих программирование
Здравствуйте, __lambda__, Вы писали:
___>1. Python — на базе него изучаем основные концепции (ветвления/циклы/функции). ___>2. С — изучаем низкоуровневое программирование в Unix среде. ___>3_1. С++ — высокоуровневое программирование (ООП, алгоритмы). ___>3_2. Java — высокоуровневое программирование (ООП, алгоритмы).
Баловство все это. Logo, потом максимум Javascript.
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.
___>ЗЫ: буду рад советам и размышлениям.
Я остановился бы на Си и JavaScript. То, что невозможно будет (?) реализовать на Си, можно и на C++, но это должен быть естественный переход, все зависит от решаемых задач.
Жизнеспособность прямо пропорциональна простоте!
Re[2]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, boot, Вы писали:
B>Я остановился бы на Си и JavaScript. То, что невозможно будет (?) реализовать на Си, можно и на C++, но это должен быть естественный переход, все зависит от решаемых задач.
А почему именно JS? Я понимаю, нужен только браузер и блокнот. Можно выложить в инет, показать друзьям. Нет, я ничего не имею против, просто он у нас опционально идет, в том году при изучении Web технологий мы его изучали вместе с Django.
Просто во всем этом есть логика:
Python — основные концепции.
C — низкоуровневое программирование.
C++ — высокоуровневое программирование.
JS — ? мне кажется он мог бы встать на место Python'а. Но Python лучше.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re[3]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, __lambda__, Вы писали:
___>Здравствуйте, boot, Вы писали:
B>>Я остановился бы на Си и JavaScript. То, что невозможно будет (?) реализовать на Си, можно и на C++, но это должен быть естественный переход, все зависит от решаемых задач.
___>А почему именно JS? Я понимаю, нужен только браузер и блокнот. Можно выложить в инет, показать друзьям. Нет, я ничего не имею против, просто он у нас опционально идет, в том году при изучении Web технологий мы его изучали вместе с Django.
___>Просто во всем этом есть логика: ___>Python — основные концепции. ___>C — низкоуровневое программирование. ___>C++ — высокоуровневое программирование. ___>JS — ? мне кажется он мог бы встать на место Python'а. Но Python лучше.
Что же это за "школьники" такие? Неужели Django теперь знают? Лучше выбрать один язык и углубленно изучать на его примере алгоритмы и структуры данных, а сам язык имхо не столь важен.
Re[3]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, __lambda__, Вы писали:
___>Здравствуйте, boot, Вы писали:
B>>Я остановился бы на Си и JavaScript. То, что невозможно будет (?) реализовать на Си, можно и на C++, но это должен быть естественный переход, все зависит от решаемых задач.
___>А почему именно JS? Я понимаю, нужен только браузер и блокнот. Можно выложить в инет, показать друзьям. Нет, я ничего не имею против, просто он у нас опционально идет, в том году при изучении Web технологий мы его изучали вместе с Django.
Разговор ведь о языках, а сейчас веб (и думаю далёко в будущем) это JS. Я сам долгое время относился к JS как к игрушке, поэтому сейчас могу смело утверждать, что это не игрушка, хоть и кажется простым. Просто поверьте, это познается на практике.
___>Просто во всем этом есть логика: ___>Python — основные концепции. ___>C — низкоуровневое программирование. ___>C++ — высокоуровневое программирование. ___>JS — ? мне кажется он мог бы встать на место Python'а. Но Python лучше.
Согласен, логика присутствует. Только как Вы объясните необходимость обертывания кода в класс, в задаче где ни одна сущность не повторяется дважды, либо можно спокойно использовать массив структур? Я не в курсе сколько у Вас времени на одного ученика, но на пару лет, думаю, хватит и двух языков, каких выбирать Вам, но поверьте, самое интересное в глубине.
Жизнеспособность прямо пропорциональна простоте!
Re[4]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, vladislaw, Вы писали:
V>Что же это за "школьники" такие? Неужели Django теперь знают?
Обычные школьники. Django знают.
V>Лучше выбрать один язык и углубленно изучать на его примере алгоритмы и структуры данных, а сам язык имхо не столь важен.
Согласен. И этим языком основным хочу сделать C++. Но в последние моменты начал сомневаться, думаю, не выбрать ли Java? Т.к. они еще на олимпиадах будут учавствовать, а там выбор между C/C++ и Java.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re[4]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, boot, Вы писали:
B>Разговор ведь о языках, а сейчас веб (и думаю далёко в будущем) это JS. Я сам долгое время относился к JS как к игрушке, поэтому сейчас могу смело утверждать, что это не игрушка, хоть и кажется простым. Просто поверьте, это познается на практике.
Никто не говорил о том, что JS игрушка. Просто поверить увы не могу. Практики у меня тоже хватает. Просто некуда его воткнуть и все. Его место занимает Python.
B>Согласен, логика присутствует. Только как Вы объясните необходимость обертывания кода в класс, в задаче где ни одна сущность не повторяется дважды, либо можно спокойно использовать массив структур? Я не в курсе сколько у Вас времени на одного ученика, но на пару лет, думаю, хватит и двух языков, каких выбирать Вам, но поверьте, самое интересное в глубине.
Копать в глубину, изучать метапрограммирование на шаблонах и прочие страшные слова они будут тогда, когда станут профессиональными программистами, а пока это школьники, нам хватит основных моментов
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re[5]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, __lambda__, Вы писали:
___>Здравствуйте, boot, Вы писали:
B>>Разговор ведь о языках, а сейчас веб (и думаю далёко в будущем) это JS. Я сам долгое время относился к JS как к игрушке, поэтому сейчас могу смело утверждать, что это не игрушка, хоть и кажется простым. Просто поверьте, это познается на практике.
___>Никто не говорил о том, что JS игрушка. Просто поверить увы не могу. Практики у меня тоже хватает. Просто некуда его воткнуть и все. Его место занимает Python.
Не факт что Python вечен JS, хотя бы потому, что это самый распространенный интерпритатор. Правила объяснить просто, как в шахматах, но когда начинается игра невозможно оторваться.
B>>Согласен, логика присутствует. Только как Вы объясните необходимость обертывания кода в класс, в задаче где ни одна сущность не повторяется дважды, либо можно спокойно использовать массив структур? Я не в курсе сколько у Вас времени на одного ученика, но на пару лет, думаю, хватит и двух языков, каких выбирать Вам, но поверьте, самое интересное в глубине.
___>Копать в глубину, изучать метапрограммирование на шаблонах и прочие страшные слова они будут тогда, когда станут профессиональными программистами, а пока это школьники, нам хватит основных моментов
Си -- настолько хорош в качесве компилируемого языка, что его, как любую хорошую вещь, сразу захотели улучшить до C++. Так до сих пор и улучшают. Си -- золотая середина между голым ассемблером и плюсами.
За обучение Си потомки Вам скажут спасибо. С++ все таки отнимает много времени на реализацию, удобен для больших проектов, он постоянно мурлычет "напиши класс". Сравните близкие к идеалу реализации простой задачи на Си и С++, больше всего вопросов посыпется из обзора Си-кода.
Жизнеспособность прямо пропорциональна простоте!
Re[3]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, __lambda__, Вы писали:
___>А что не так? Мы сейчас как раз Си заканчиваем, довольно таки гладко все идет. До этого у них был примерно месяц программирования на Python.
Я конечно не в курсе, может у вас там все гении, но я, например, в школьном возрасте вряд ли бы заинтересовался изучением университетской программы. Идеальным инструментом было бы нечто, что позволяет получать видимые/ощутимые вещи за короткий срок. А изучая, например, С++, придется их мозги грузить лишними сущностями(библиотеки, фреймворки и т.д.), которые к искусству программирования отношения имеют мало. А в таком возрасте считаю важным именно составляющую искусства, либо уклон в простое практическое применение (хотя бы те же макросы в экселе). Всё остальное они потом и так выучат, если пойдут учиться на инженеров.
Помните анекдот про глобус и презерватив?
Так вот я считаю, не стоит школьников грузить понятием референц-эллипсоида, когда нужно всего навсего рассказать про глобус. А если они сами хотят ковырять такие понятия, то тут надо чётко следить и бить в нужный момент по рукам, а еще лучше раздать презервативы, чтобы не гробили себе молодость.
Re: ЯП для школьников углубленно изучающих программирование
Здравствуйте, __lambda__, Вы писали:
___>Организовал в школе клуб программистов, собрав ребят увлекающихся программированием. Собираемся изучать разные ЯП, технологии (3D/Web/etc). Примерная программа такая:
___>1. Python — на базе него изучаем основные концепции (ветвления/циклы/функции).
___>ЗЫ: буду рад советам и размышлениям.
Хватит одного Питона. Посмотри нынешние лекции МИТ и задания на Питоне — мало не покажется. Главное старьё вроде Сикп не трогай, пусть догнивает.
Re[3]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, __lambda__, Вы писали:
___>Просто во всем этом есть логика: ___>Python — основные концепции. ___>C — низкоуровневое программирование. ___>C++ — высокоуровневое программирование.
Питон это уже высокоуровневое программирование. С++ это скорее средний уровень. С/С++ люди осваивают годами и то не могут побороть многие вещи, вроде указателей
Re: ЯП для школьников углубленно изучающих программирование
Здравствуйте, __lambda__, Вы писали: ___>вот тут я сомневаюсь, после C сразу перейти на Java или C++
на Java, наверное
___>ЗЫ: буду рад советам и размышлениям.
и как рассказывают про Java и вообще про программирование мне очень нравятся вот эти лекции: http://www.youtube.com/watch?v=ttbu9L4RdYs&feature=relmfu
Re[4]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, Аноним, Вы писали:
А>Я конечно не в курсе, может у вас там все гении, но я, например, в школьном возрасте вряд ли бы заинтересовался изучением университетской программы.
Никто и не говорит про университетскую программу. Просто углубленное изучение программирования.
А>Идеальным инструментом было бы нечто, что позволяет получать видимые/ощутимые вещи за короткий срок.
Согласен. Таким инструментом у нас служит Python. Например, для 3D можно взять Panda3D и начать писать простенькие игры. Для веба можно взять Django. Для GUI использовать встроенную Tkinter. Для всего этого очень хорошо подходит Python.
А>А изучая, например, С++, придется их мозги грузить лишними сущностями(библиотеки, фреймворки и т.д.), которые к искусству программирования отношения имеют мало. А в таком возрасте считаю важным именно составляющую искусства, либо уклон в простое практическое применение (хотя бы те же макросы в экселе). Всё остальное они потом и так выучат, если пойдут учиться на инженеров.
А я и не предлагаю их грузить лишними сущностями. Например, exceptions, templates, RTTI и прочие радости жизни мы рассматривать не будем. Просто как Си с классами и немного STL. На базе C++ хочется изучить OOP, алгоритмы, структуры данных и использовать его как основной язык для олимпиад. В олимпиадах мы ограничены C++ и Java.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re[6]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, boot, Вы писали:
B>Не факт что Python вечен JS, хотя бы потому, что это самый распространенный интерпритатор. Правила объяснить просто, как в шахматах, но когда начинается игра невозможно оторваться.
Кстати вспомпил фразу одного из лекторов курса 6.001 (MIT) то ли Sussman, то ли Abelson. Он сказал, что программирование как шахматы, правила игры он может объяснить за минуты, а вот чтобы стать истинным мастером нужны годы тренировок. Так же и в программировании, синтаксис языка можно изучить за недели, а чтобы стать профессиональным программистом требуются годы практики.
Да, python не вечен. Да и JS не вечен, вон Google хочет заменить его Dart'ом. Не в этом суть, просто Python с методической точки зрения больше подходит для обучения основным концепциям.
B>>>Согласен, логика присутствует. Только как Вы объясните необходимость обертывания кода в класс, в задаче где ни одна сущность не повторяется дважды, либо можно спокойно использовать массив структур? Я не в курсе сколько у Вас времени на одного ученика, но на пару лет, думаю, хватит и двух языков, каких выбирать Вам, но поверьте, самое интересное в глубине.
Суть не в том, чтобы максимальное количество языков изучить. Кстати у меня и так получается пара языков Python & C/C++. Вот думаю просто, не добавить ли еще Java.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re[4]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, Ikemefula, Вы писали:
___>>Просто во всем этом есть логика: ___>>Python — основные концепции. ___>>C — низкоуровневое программирование. ___>>C++ — высокоуровневое программирование.
I>Питон это уже высокоуровневое программирование. С++ это скорее средний уровень. С/С++ люди осваивают годами и то не могут побороть многие вещи, вроде указателей
Абсолютно согласен. Python безусловно высокоуровневый язык. Я был немного не точен. Исхожу в основном из целей обучения, оттуда и выбор языков:
Основные концепции программирования (циклы, ветвления, функции) -> Python (меньше шума, простой синтаксис похожий на псевдокод)
Низкоуровневое программирование (программирование микроконтроллеров, ручное управление памятью) -> С (больше вариантов нет)
Высокоуровневое программирование (ООП, алгоритмы, структуры данных) -> С++ (думаю, не заменить ли на Java)
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re[2]: ЯП для школьников углубленно изучающих программирован
Здравствуйте, Ikemefula, Вы писали:
I>Хватит одного Питона. Посмотри нынешние лекции МИТ и задания на Питоне — мало не покажется. Главное старьё вроде Сикп не трогай, пусть догнивает.
Да, я их все посмотрел, включая тот же SICP (и не считаю его старьем).
А вот одного Питона не хватит, т.к. нам еще на олимпиадах учавствовать, а там к сожалению Питон не выбрать.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra