lexxpavlov
@lexxpavlov
Программист, преподаватель

Каким языкам программирования учить в колледже?

Собираюсь обучать программированию студентов. Специальность профильная — Программирование в компьютерных системах (ПКС).

Ставлю перед собой две несвязанные задачи:

1) научить программировать, хотя бы чуть-чуть (всех)

2) хотя бы нескольких сделать хорошими программистами :)

В языках дали карт-бланш, так что сейчас я выбираю, какому языку/каким языкам обучать.

Задача осложняется тем, что многие пойдут на эту специальность потому, что она самая престижная в этом колледже, либо потому что их туда устроят, а сами студенты не очень заинтересованы в своём обучении… Но обычно в группе есть 2-3 самородка, ради которых хотелось бы постараться.


Хотелось бы не ограничиваться популярным в последние годы веб-программированием, и дать (в том числе?) язык для десктопной разработки.

Склоняюсь к идее начать на PHP, а затем перейти к C#. Рассматриваю Делфи, но что-то не уверено в её востребованности в наши дни. PHP ввиду его си-подобности и лёгкого старта на нём.

Сам я хорошо знаю PHP и Паскаль (Делфи). Неплохо Javascript и Си, совсем чуть-чуть бэйсик (ассемблер не упоминаю:). Немного не уверен, потяну ли преподавание C#, если я на нём только пару helloworld-ов написал, но время ещё есть.


Есть два похожих вопроса: habrahabr.ru/qa/20824/ и habrahabr.ru/qa/12448/.

В первом предлагали много редких языков. Здесь такое точно не нужно, выбор будет из наиболее распространённых.

Лелею в себе надежду хотя бы приблизить студентов (которые захотят) к уровню Джуниора…


В общем, обращаюсь к коллективному хабраразуму за советом.

P.S. Просьба не предлагать функциональные/редкие языки — не потянут просто.

P.P.S. Если всё-таки будет выбран PHP, беру на себя ответственность перед Хабраобществом не плодить говнокодеров плохих программистов, а сразу приучать студентов к правильному стилю и best practices.

Виды деятельности программиста (из стандарта на специальность ПКС)

Программист готовится к следующим видам деятельности:
  • Разработка программных модулей программного обеспечения для компьютерных систем.
  • Разработка и администрирование баз данных.
  • Участие в интеграции программных модулей.
  • Участие в ревьюировании программных продуктов
  • Сопровождение программных продуктов.



Многие из этих вещей будут в смежных дисциплинах, типа разработки БД. Сейчас речь идёт больше о Основах программирования и Теории алгоритмов.
Представляете, эти два предмета были разнесены в разные семестры! я еле убедил их одновременно проводить!

UPD. Выбрал язык C#. Проводил его в течение нескольких лет, идёт очень хорошо. Рад, что выбрал именно его.
  • Вопрос задан
  • 14304 просмотра
Решения вопроса 5
MetAmfetamin
@MetAmfetamin
Python
Так как можно показать:
— процедурную парадигму
— ООП
— разработку настольных приложений
— реализацю различных скрипотов для помощи в администировании (не все будут разработчиками)
— реализацию простого web (можно даже с gae)

Если с Python проблемы/не_подходит/не_нравится, то можно преподавать Java или C#: первый семестр — desktop, второй — web.
Но в любом случае язык должен быть один на протяжении всего курса.

P.S. Для junir-ов не забудте показать какую-нибудь систему управления версиями и баг-трекер.
Ответ написан
По своему опыту, из курса WinAPI я понял, что большинству не стоит давать С++, т.к. из-за сложности языка они полностью теряют интерес и процесс «обучения» сводится к покупке лабораторных и бесконечными пересдачами, пока преподаватель не поставит зачет лишь бы отвязаться.

Я бы посоветовал C# по следующим причинам:
  • Он проще, чем Java (имхо)
  • Autocomplit, Autoindent, Reshaper делают C# код намного более читабельным, по сравнению с тем же кодом от новичка, не знающего про правила именования, отступов
  • Расширение Resharper на лету дает советы и исправляет многие неочевидные ошибки
  • Удобная отладка. Для новичков, не понимающих как и что работает будет нелишним пройтись пошагово по программе, в реал-тайме отслеживая состояние переменных. Встроенная и мощная реализация в студии.
  • В будущем можно без проблем перейти на Web (ASP.NET MVC)
  • Ну и конечно синтаксический сахар )
Ответ написан
foxmuldercp
@foxmuldercp
Системный администратор, программист, фотограф
C# — он и десктопный и Web (AspNet), плюс MetroUI и WindowsPhone,
Express Studio 12 + Express TFS12 — бесплатны.
Но всё уходит в сторону всяких облаков, хоть Azure, хоть еще куда, мне все рекомендовали забить на десктоп и изучать веб, хоть на том же шарпе…
Ответ написан
@GalinaM
Насколько понятно из поста вы даете базовый курс для будущих (в перспективе) профессиональных программистов широкого профиля. Специализацию они выберут попозже, когда что-то сами попробуют, пощупают.
Поэтому, по-моему, начинать нужно с полноценного маинстримового (максимально востребованного) ООП языка (C++, C#, Java). Конкретно какой язык — не очень принципиально, вы будете сначала учить базовым универсальным принципам и алгоритмам. Конечно, это на старте современным детишкам может быть сложно и скучновато — им бы «покликать» побыстрее, не вдаваясь суть того, что находится за сценой. Но «покликать» (в смысле формочку красивую мышкой слепить), кстати можно и на любом из этих языков. А для тех 2-3-х самородков, которые будут ПРОГРАММИСТАМИ, нужно классическое серьезное начало.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 26
ixSci
@ixSci
Учите тому, что сам знаете хорошо. Иначе Вам не будет никакого доверия, а следовательно ничему не научите. У меня в универе был С, до этого я с программированием не сталкивался вообще. Т.е. был полный ноль. Все кто хотел, смогли ему обучится. А те кто не хотел, не обучились бы ничему другому, всё равно.

Там кто-то выше писал про консоль, и про то, что студенту больше ничего не нужно. Лично для меня программирование стало действительно интересно, когда я в BC3.1. включил мышь и разделили экран на 4 сегмента нарисовав 2 линии. Всё, что было до этого с консолью было не интересно.
Ответ написан
@igoravr
Начинать учить лучше с Java. На нём можно хорошо объяснить базовые вещи и принципы. А дальше студент сам выберет, что ему интереснее — веб, мобильные приложения и т.д.
Ответ написан
Anakros
@Anakros
С нуля? Паскаль, потом Си.
Ответ написан
No_Time
@No_Time
Для Ruby в последнее время распогодилось много всего вкусного. Имхо как первый язык в самый раз! Как плюс можно даже затронуть немного синатры, или даже рельсы(конечн самые азы).
Ответ написан
taliban
@taliban
php программист
Вы знаете, я перелопатил много языков, с программированием связан со школы, с моего первого знакомства с языками прошло больше 10 лет, и если бы вы этот вопрос задали лет 5 назад я бы с 100% уверенностью сказал бы паскаль/делфи, но сейчас на их смену пришел именно питон. Это универсальный язык, екзе файлы вам не нужны, вам нужно учить детей языку, программированию в целом и думать. Написать алгоритм можно на любом языке, для этого не обязательно его компилировать. Я бы посоветовал еще c#/java или javascript, но они очень сложны для начинающих, но в конце курса их неплохо было бы познакомить с этими языками. А вот с php я бы советовал не связываться =) Я сам php-шник с более чем 6-ти летним стажем и точно могу сказать: только не php.
Ответ написан
Screatch
@Screatch
Ruby On Rails front-end developer
Склоняюсь или к Ruby или Python. В качестве первых языкаов это самое то.

Можно так-же затронуть как просто PHP, так и PHP вкупе с всякими фреймворками аля Codeigniter, Yii, Symfony, и.т.д., всё таки в наше время это один из самых популярных языков и многим придётся с ним ещё сталкиваться.
Ответ написан
Комментировать
Из личного опыта:
— Если есть у учащихся опыт верстки (им знакомы HTML и CSS), то с PHP.
— Если нет опыта верстки, то с Delphi (Pascal — на крайний случай).
— Другие популярные языки (кроме VBA) не советую, т.к. с нуля очень тяжело понять.
Ответ написан
@65520
> Сам я хорошо знаю PHP и Паскаль (Делфи). Неплохо Javascript и Си

Учить тому, что знаешь не очень хорошо — плохая затея однозначно.

Чтобы учить PHP и JS у людей должно быть понимание того, как работает HTTP, веб-сервера, что такое вёрстка и ещё много-много других моментов. Я преподавал в институте конкретно эти вещи и сталкивался именно с тем, что С НУЛЯ понять даже не то, чтобы сам PHP (сам язык-то достаточно простой — я не спорю!), а именно суть происходящего в веб-программировании достаточно сложно, если студент не знает, что такое клиент, сервер, протокол и тому подобные вещи. Даже простейшая отправка формы на сервер хоть и пишется элементарно, по факту тянет за собой кучу (пусть и простейших) понятий и если студент с ними не знаком, то простота самого языка тут уже вообще ничего не решает — для него это всё равно всё выглядит как магия. А использовать PHP просто как консольный Си-подобный язык это какая-то сомнительная затея, как по мне.

Delphi устарел — тут нечего обсуждать.

Остаётся Си — его и берите. В тех объёмах, в которых Вы успеете студентов натаскать, он принципиально не сложней других языков — это миф, который гуляет десятки лет, жертвой которого стал и я сам в своё время. Вы же не будете их заставлять исходники ядра Linux ковырять или драйвера какие-нибудь. Плюс для изучения Си не нужно знать по части ИТ на самом деле НИЧЕГО вообще. Берёте обычный текстовый редактор с подсветкой синтаксиса, gcc (mingw под windows) и вперёд колбасить примеры из K&R, компилируя их командой cc test1.c. Если у вас семестров и учебных часов много, то можно потом плавненько слезть на C# — студенты уже будут понимать логику работы программы и вообще смысл и суть происходящего, синтаксис в целом там похож, а Вы просто покажете, как алгоритмы цеплять к кнопочкам и списочкам. Если часов ещё больше, то можно копнуть и в ASP.NET итд итп. Возможно есть смысл начать сразу с C# — это будет быстрей и эффективней. Но если Вы сами его знаете плохо, то не стоит — начинайте с С и параллельно подтягивайте свои знания C#.

С++ я бы ковырять не стал — даже простейшая задача создания формы с 2-мя полями и 1 кнопкой даже для человека хорошо понимающего С решается не так уж просто и не особо логично — опять же нужно обладать кучей дополнительных знаний — WinAPI, MFC или Qt, ООП на приличном уровне. Для простейшего уровня C# достаточно объяснить им самые основы ООП на примере кнопок и списков и всё — простейшие программы уже можно писать.
Ответ написан
Комментировать
Есть мнение, что JavaScript очень хорошо подходит в качестве первого языка программирования. С его web-применением заморачиваться не нужно — программы запускать в консоли через node.js, сосредоточиться именно на алгоритмах. Можно даже попробовать следовать SICP, но с применением JavaScript вместо Scheme.

Да и прототипная модель ООП, если она первая, пойдет очень хорошо. И после нее не будет проблем освоить классовый подход к ООП, как это часто бывает, если сначала изучить классовое наследование, а потом пытаться понять прототипное.
Ответ написан
Комментировать
DarthRamone
@DarthRamone
Какой PHP, вы что тут, совсем крышей поехали? Обучать программированию ныряя в этот чан с говном, простите за выражение? Там же каша сплошная. Если вас интересует ВЕБ, то смотрите в сторону питона или руби. Но и ТО, учитывая то что это колледж, веб вообще можете не трогать. Сами выучат, когда время придет.
Начинайте с Си. Никакого мусора, чистейший язык, с низким уровнем абстракции. То что нужно. Обучение программированию так и должно проходить, с низкого уровня абстракции, шаг за шагом, к высокому. К высокому придут сами, БЕЗ МАЛЕЙШИЙ ПРОБЛЕМ, если они поймут Си. Никакого ГУЯ, только консоль и алгоритмы. Сортировки, списки, очереди, стеки, все азы от А до Я. Так и только так вы раскроете самородков. Заливая в уши пхп вы только запутаете и оттолкнете студентов.
Ответ написан
lexxpavlov
@lexxpavlov Автор вопроса
Программист, преподаватель
Попрошу знатоков про C# подробнее написать. Насколько лёгок в освоении/первоначальной настройке?
Плюсы я точно давать не буду — не потянут большинство, поэтому смысла нет. А вот с шарпом может дело пойти.
Ответ написан
Darkus
@Darkus
Haskell.
Ответ написан
Комментировать
Gibbzy
@Gibbzy
Я по диплому преподаватель информатики по диплому, и когда то сам объяснял детям про паскаль так же я php программист по работе.
Немного моих мыслей:
1. Мне кажется интерпритируемый язык вы возьмете или компилируемый это неважно совсем. Куда важнее синтаксис языка.
2. Питон хорош тем что у него ясный синтаксис который заставляет людей сразу делать красивое оформление кода. Но я вас уверяю что вы запаритесь исправлять всем отступы.
3. Паскаль. Я много думал на тему почему везде преподают паскаль и понял, объясняю почему:
3.1 Он со статической типизацией таким образом понятие типов данных упрощается для студентов, чем «Вот тут вот переменная была integer а вот тут вот потому и потому стала string».
Нужно явно писать var integer x;
3.2 Та самая знаменитая операция присваивания ":=" Людям еще не программистам сложно объяснить почему "=" это не равно а присвоить и что такое операция присвоения вообще. Все помнят из математики что равно это равно, а "==" это ерунда какая то.
3.3 begin end позволяет более четко и ясно показывать блоки кода и структуру программы чем "{}". Пока человек пишет begin он может быть успевает хоть чуть чуть задуматся над тем что он делает. Главное не объясняйте в слепую «Тут нужно написать begin потому что так нужно».
3.4 Это общеприяная практика по всему постсоветскому пространству думаю вы сможете без труда найти массу информации о преподавниии паскаля.

Из минусов стоит отметить что в нем нет OOП ну или есть, но оно какое то не такое. Если в курс обучения входит ООП то стоит подумать.

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

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

P.S Кстати есть такая штука small basic, она очень прикольная, присмотритесь :)
Ответ написан
Комментировать
charon
@charon
сначала Питон, потом C#.
Ответ написан
Комментировать
Я присоединюсь к мнению о питоне.

GUI: Знакомство программированием у меня началось с Delphi, было интересно писать программы по которым можно было покликать (тогда мне казалось это настоящие программы). Потом я немного познакомился с Qt, там было еще интереснее, но мне всегда было сложновато с C++. Потом я познакомился с Python и через некоторое время мне понадобилось писать гуевое приложение, что я и сделал с помощью PyQt (Python + Qt). Эта связка (PyQt) содержала для меня простоту создания форм Delphi, мощность Qt и простоту Python. Хотя на питоне можно писать используя GTK, Tk, wxWidgets и др.

Web. Сейчас мне больше всего интересен веб (html+css+js), поэтому возможно именно возможность делать страничку как в ВКонтакте будет более интересна студентам, а серверную часть можно запросто сделать на питоне используя, например, flask (простой и мощный веб фреймворк на питоне). Здесь питон может соревноваться с PHP или Ruby.

Алгоритмы. Алгоритмы всегда мне казались скучными, но без них никуда. Для этого также подойдет питон (можно глянуть книгу с примерами на питоне: Тоби Сегаран — Программируем коллективный разум), но возможно лучше все же C или C++. Хотя для питона есть всякие SciPy и NumPy, что думаю гораздо будет проще для студентов, чем так и не понятый мной матлаб.

Также помимо питона было бы полезно и интересно изучить html+css+js, а также C. Вообще то количество преподаваемых мне в университете языков (Delphi, C, C++, asm, java, matlab, prolog) явно излишне. Но главное чтобы студенту было интересно на Ваших занятиях и столкнувшись с трудностями он не забил на все и просто бы старался получить зачет.

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

Резюмируя:
Питон очень простой язык, что является огромнейшим плюсом для студентов особенно если нет опыта программирования.
Питон очень правильный язык, который заставляет писать читаемый и компактный код.
Питон интересный язык, используя его можно писать простые приложения, решающие практически любые задачи.
Питон мощный и практичный (прагматичный) язык, который очень популярен и используем и имеет огромную стандартную библиотеку, не говоря о сторонних инструментах.
Питон имеет удобные и мощные средства для разработки, например, PyCharm бесплатен для студентов.
Ответ написан
MonkAlbino
@MonkAlbino
Фронтенд разработчик
В школе для галочки обучался Бейсику, но толку от этого было никакого. В университете в курсе языков высокого уровня преподавали C/C++, в курсе Ассемблера понятное дело ассемблеры. Уже после самостоятельно по книжкам изучал PHP и Python.
Поэтому посоветовал бы показать студентам, что есть строго типизированные (C/C++/etc) и динамические языки (PHP/Python/etc).
Основываясь на том, что вы сами знаете, предлагаю полгода C/C++ (на стадии обучения всем студентам будет казаться, что это одно и тоже, поэтому стоит провести некое разграничение, чтобы не путали), вторые полгода PHP (после C студентам будет проще его изучать) да и web для большинства кажется более простым для доступа к аудитории и тому, что их труды не пройдут зря. Лучше было бы изучать Python, чтобы понимали наличие различных синтаксисов и шаблонов программирования. Но раз у вас с ним не сложилось, то и не стоит экспериментировать.
Ответ написан
Комментировать
dimitrymd
@dimitrymd
Если специальность профильная — и если студенты к этому готовы — лучше начинать учить программмирование с С. Потом С++. И потом студентам будет легко переходить на любые языки, кроме, возможно функциональных. А если не профильная — или студенты послабее — то отлично пойдет Python.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Я думаю наиболее оптимальным будет связка php, java, python.
Ну а к вебу приложить html, css, javascript.
Не забывайте про фреймворки.
Ответ написан
Комментировать
lightman
@lightman
Если бы я был сейчас школьником/студентом, изучающим первый язык, я бы хотел, чтобы меня учили Python'у.

Автор, про PHP даже не думай!
Ответ написан
Комментировать
nickme
@nickme
Вот здесь два месяца назад такой же вопрос обсуждали :)
Ответ написан
Никакой!

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

Теория, алгоритмы — это важная основа для будущего программиста.

Наверняка, сами встречали «одаренных» выпускников, которые вполне могут написать «Hello World!», но при не понимающих, что такое переменные…

Ну, а что-бы вдохновить учеников реальными примерами — показывайте их на том, что сами хорошо знаете.
Ответ написан
lexxpavlov
@lexxpavlov Автор вопроса
Программист, преподаватель
Не надо привязывать мышление учеников к конкретному языку
А на чём же эти алгоритмы практически отрабатывать? «Компилировать» блоксхемы? Базовый язык всё-равно нужен.
Вот если бы я готовил профессионального высококвалифицированного программиста, то я бы давал 3-5 языков под разные задачи, плюс ещё десяток «для общего развития».
Теория, алгоритмы — это важная основа для будущего программиста.
Это да. Основная часть моей будущей работы :) Научить строить алгоритмы. Поднимать вопрос «Почему» чаще, чем «Как».
не понимающих, что такое переменные…
Встречал, конечно. Принимал у таких экзамены, самому противно было «тройку» ставить.
Это тоже часть работы. Таких случаев постараюсь не допускать.
Ответ написан
C, а потом можно и C++. Для современной разработки второй практически заменяет первый (я не говорю о низкоуровневых разработках). Почему именно эти 2 языка? C — фундаментальная основа, низкий уровень абстракции, но который понятен программисту — «ассемблер с человеческим лицом». С++ — введение в ООП, причем не обязательно использовать WinAPI, ведь есть Qt, Visual C++, а для GUI — wxWidgets. После такого курса будет несложно им самим перейти на C#, Java, PHP (благо синтаксис похож), или изучить что-то типа Python, Ruby (по мере увеличения абстракции), или даже изучить ассемблер (навыки низкоуровневости C не дадут подумать, что «реальное программирование» — это PHP, Java, C#).
Что насчет теории — алгоритмы и структуры данных (можно даже по одноименной книге АХУ).
Ответ написан
Комментировать
Stac
@Stac
А я за PHP и Basic (в варианте VBA или AutoIT)

Важно, что полученные знания студенты смогут применять еще во время учебы.
А так как вы знаете PHP, вы сможете давать не только азбуку и примитивные примеры, но научите решать студентов их собственные прикладные задачи.
Ответ написан
Комментировать
@Elmot
Lua, потом Python
Ответ написан
goodprogrammer
@goodprogrammer
к. ф.-м. н.
Зависит от начального уровня и способностей учеников конечно, и их целей.
Питон и руби — вариант наименее рискованный в среднем.

https://www.youtube.com/watch?v=0nl9JPh9lTk
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы