LINUX.ORG.RU

Язык для обучения программированию


1

7

Понятно, что Java - наверное самый мэйнстрим на текущий момент, ну с C#(Mono)(я не рассматриваю здесь пыхпых, джаваскрипт и прочий веб), но мне известна(как и большинству местных) статья, что изучение с Явы вредно для мозгов.
И вот, столкнувшись с тем, что отданные под моё руководство студенты 3го курса не сильно способны заниматься программированием на С++, задумался, как решить эту проблему, избегая 2х тупиков - делать всё за них, и выгнать их.
Допуская, что производительность языка не нужна(хотя, ввиду того, что делаем мы в основном числодробилки, это очень сильно допущение) и вообще у нас под рукой кластер, какой язык посоветует ЛОР, помогающий развить мозг молодых учёных до уровня С/С++? Да и вообще, список годных для обучения, и негодных соответственно. Думал было python, но тем не в нём производительность недостаточная, а самому реализовывать затратные вещи на С пока не хочется.
Update: vb и delphi не Ъ ввиду того, что я то под линуксом сижу. Update 2: всё, наработанное за время использование предложенного языка, не хочется терять, поэтому хорошо бы, если б можно было соединять уже готовые вещи с C/C++. Насчёт pascal я просто никогда такого не желал, там такое есть?

★★★★

Последнее исправление: aptyp (всего исправлений: 2)
Ответ на: комментарий от Macil

Мне не совсем без разницы, на чём они будут делать, я собираюсь это использовать и в дальнейших работах.

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

Можно поподробней про питон, и что же тогда сегодня остаётся перспективными языками.

«JavaScript — объектно-ориентированный скриптовый язык программирования. Является диалектом языка ECMAScript.» «JavaScript is a prototype-based scripting language». И всё-таки что за ниша? P.S. в яваскрипте и лиспе нуб(во втором чуть меньший)

aptyp ★★★★
() автор топика
Ответ на: комментарий от aptyp

Если ты собрался студентов обучать JS, то я отказываюсь от просьбы показать историю успеха. Хотя да, для веба он легкий, а для остального я вообще не знаю - использует ли кто....

minakov ★★★★★
()
Ответ на: комментарий от minakov

не, не отказываюсь, 3 года у них ещё есть.

aptyp ★★★★
() автор топика
Ответ на: комментарий от aptyp

Можно поподробней про питон,

Что именно подробнее?

что же тогда сегодня остаётся перспективными языками

Сказать сложно. Скорее всего, языки не будут играть решающей роли. Доля инженерного подхода в программировании будет сокращаться. Как это будет? Логические фрейморки (CiC, теория типов Мартина-Лефа)? Языки предметной области, в особенности для описания бизнес-логики? Фреймворки для моделирования и анализа бизнес-процессов? Имитационное моделирование? Математическое моделирование? Создание аппаратуры для предметной области (те же FPGA)? Скорее всего, будет все сразу. Это и сейчас есть... Только сейчас это скорее исключение, инновационная деятельность, повод для гордости и повод похвастаться длинн^W.

Ясно только, что без всесторонней подготовки, единственное на что сможет рассчитывать будущий «программист» - на теплую скамейку на галере. Но тут, извините, против индусов с китайцами конкурировать сложно.

И всё-таки что за ниша?

Была у лиспа такая замечательная идея под названием «программирование в терминах предметной области». Теперь эта идея без помпы и взревываний спокойно эксплуатируется в рамках JS. См. напр. фреймворки ExtJS или Enyo.

Macil ★★★★★
()
Ответ на: комментарий от Macil

Ясно только, что без всесторонней подготовки, единственное на что сможет рассчитывать будущий «программист» - на теплую скамейку на галере. Но тут, извините, против индусов с китайцами конкурировать сложно.

ну да, ну да, а все те замечательные технологии и фреймворки за которые вы так горой стоите будут писаться сами собой, «ога» :)

shty ★★★★★
()
Ответ на: комментарий от Macil

Можно поподробней про питон,

Что именно подробнее?

в чём его тупиковость?

// кстати, присоединяюсь к вопросу

shty ★★★★★
()
Ответ на: комментарий от shty

в чём его тупиковость?

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

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

Я сам в свое время достаточно много писал на Питоне. Сначала диплом (веб-приложение), затем из жанра мелкой автоматизации. До сих пор вспоминая его с теплотой. Именно в Питоне я попробовал map/filter, именно на Питоне я написал свою первую «лямбду». И лет 8 назад его можно было бы рекомендовать к изучению и практическому использованию.

Но не сейчас. Если уж хочется питонообразности, то уж лучше юзать Руби.

Macil ★★★★★
()
Ответ на: комментарий от shty

ну так они потом тоже будут писаться с помощью тех подходов, о которых рассказал Macil, и абстракция абстракцию на 1024 гигагерцовых машинах будет погонять)

aptyp ★★★★
() автор топика
Ответ на: комментарий от Macil

Насчёт тупиковости питона спрашивал, но Вы в следующем посте уже описали вроде как.
Тем не менее изучение языка - это время, неделя в случае питона, и 21 + N дней для С++, и изучать алгоритмы на каких-то псевдокодах хуже, чем на каком-нибудь мэнстриме, время будет сохранено.
Всесторонняя подготовка не включает в себя знакомство с какими-нибудь ЯП, не будет же студент в качестве лабы показывать псевдокод.
Ага, понял, просто не считал её самой главной идеей лиспа. Но эту идею mv только так и упоминает в каждом треде.

aptyp ★★★★
() автор топика
Ответ на: комментарий от Macil

питон — продукт 90-х годов, когда мощность миникомпьютеров позволила исполнять интерпретируемые языки общего назначения

ну да, в 90-е же провал был, вот в 50-е круто, а в 90-е ну неурожай просто

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

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

Как результат —

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

  • дикая смесь из функционала «больших» и «малых» языков
  • нет достойного ООП
  • нет достойной системы модулей
  • нет возможности создания eDSL
  • нет хорошей реализации
shty ★★★★★
()
Ответ на: комментарий от aptyp

уже пробовали - скайнет получается :)

shty ★★★★★
()
Ответ на: комментарий от nyash

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

deterok ★★★★★
()
Ответ на: комментарий от Macil

Но тут, извините, против индусов с китайцами конкурировать сложно.

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

mv ★★★★★
()
Ответ на: комментарий от Deleted

Не угадал)

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

SDSWanderer
()
Ответ на: Не угадал) от SDSWanderer

На хлеб дельфями зарабатывают до сих пор же

aptyp ★★★★
() автор топика
Ответ на: комментарий от mv

В Штатах. Особенно заметно в автомобильной промышленности.

Это все-таки афтишный ресурс, можешь привести какие-то данные по этой отрасли? Я (живу в Украине) пока что сокращения аутсорс-традиции не замечаю...

alienclaster ★★★
()

буду не оригинален - fortran. для математики - самое то. а библиотек-то сколько

anonymous
()

Мда... нехило тут всё засрали на 20 страниц...

Я сам студент, но вот что.

Насколько я знаю (по словам моего преподавателя матанализа) Java хорош для математиков тем, что в этом языке есть такое понятие, как бесконечность. Поэтому, м.б. всё-таки лучше его попробовать. (Предупреждаю. Сам я с Java не знаком)

Кстати. Если студент физмата 3-го курса не может осилить С++, то мозгов у него, видимо, совсем нет. И можете не стесняться. Скажите студентам чтобы учили С++ сами. Дайте им материал по С++. В конце концов, это не так трудно. Программирование и математика очень тесно переплетаются. Если математик не в силах освоить элементарную логику такого языка программирования, как C++ на том уровне, который вы описали, его можно смело отчислять. Ну а что? Вы же не заставляете искать студентов ошибки в том же Ctorrent, да и C++ это не ассемблер.

Так что либо Java, либо C++.

// Читал только 1-ю страницу.

Urchin ★★★
()

Начинать надо с теории алгоритмов.

Формы представления (словесная, словесно-формульная, граф-схемы, блок-схемы) и т.д.

Задачи на классы разделить – формализуемые (где алгоритм есть) и не формализуемые (или слабо формализуемые – где алгоритма решения нет).

И уже отсюда два направления – алгоритмические (формальные) языки и функциональные (логические) языки.

И это как минимум.

А вообще можно начать с парадигм программирования: - императивного; - декларативной; - логического; - продукционное; - объектно-ориентированное; - прототипное; - ...

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

Сначала стратегию надо выработать...

А ещё есть математическое программирование и это особое направление со своими языками и своей технологией.

Сравнивать Java и Lisp как-то некоректно даже. Или на один уровень их ставить. И начинать точно не с них. Ими можно заканчивать.

user0xff
()
Ответ на: комментарий от user0xff

Ну, в принципе у них всё это уже было в дискретке(первая часть, кроме парадигм), но мышление определенное не выработалось
Они языки программировани(Java и Lisp) - языки => сравнивать можно. На один уровень ставить нельзя, Java сливает. Начинать с lisp очень даже можно, sicp мне очень понравился. Заканчивать... Если кто-то на java остановился, мне его жалко.

aptyp ★★★★
() автор топика
Ответ на: комментарий от Urchin

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

aptyp ★★★★
() автор топика
Ответ на: комментарий от aptyp

Все студентам все равно не дашь. Где-то на чем-то остановиться надо.

А начинать с С. Со структурного программирования то есть и где типы данных у переменных есть. А потом уже про объекты рассказывать.

К примеру, HTML ещё более высокоуровневый чем Java, но он где-то по-середине у всех. И ещё про SQL не забыть. Без этого вообще никуда.

Кроме Lisp еще Prolog есть. Та ещё классика. А что за специальность у студентов? И сколько часов у дисциплины?

user0xff
()
Ответ на: комментарий от aptyp

Аспиранты что ли?

А прикладным математикам много дисциплин по программированию надо. И что бы все в цепочке были. А в конце octave или ещё что-то такое. Или если есть конкретная специализация то что-то прикладное.

Я с экономистами вожусь. Чуть проще наверное.

Хотя все студенты одинаковые в начале (когда учиться хотят) и в конце (когда уже не хотят).

Наверное так.

user0xff
()
Ответ на: комментарий от aptyp

Я на втором курсе C и С++ студентам читаю. С++ только что бы объектно-ориентированное программирование начать. Дальше Java - и это другой препод.

Из задачек - ряды Тейлора/Макларена, матрицы, файлы. С курсовыми работами. Но курсовая так. Для усиления теории пристёгнута. Там больше про документирование программного изделия. Что бы продать могли) Экономисты же.

На третьем - базы данных и вокруг этого.

На четвертом - искусственный интеллект (экспертные системы).

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

Для математиков, я думаю, так же надо и что бы на фоне специальных дисциплин.

В любом случае лучше с С начинать. Потому что просто и сурово)

И приучает к чистоте программного кода. Это когда с выделениями/освобождениями памяти играться начнут особенно актуально.

user0xff
()

Groovy, Ruby.

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

вообще, стоит начать с Си. после первыъ segmentation fault и освоения gdb прийдет понимание работы с указателями. а после того можно и ооп впаривать. упорются на множественном наследовании, приведении типов и прочих радостях - можно будет и sTl подавать (да, я намеренно выделил TEMPLATE).

питон пригоден, но у него ооп, как по мне, дык неполноценно и ущербно. хотя есть и огромный плюс - его вмонтированный набор библиотек - хоть отбавляй. и да, он шустрей руби. и нет, он хуже груви =)

опять-таки, советую толкать Си, а потом переходить к ООП и груви/руби. тогда прийдет дзен.

shybovycha
()

апдейт: в зависимости от уровня развития внятности (читай: восприятия) студентов и интеллектуальных ресурсов может статься так, что начать стоит и вовсе с Gambas (обещался быть лучше VB)...

shybovycha
()
Ответ на: комментарий от user0xff

вот из за таких, у студентов в голове в плане программирования одно говно.

выгнать бы тебя к херам из преподов бы.

lovesan

anonymous
()
Ответ на: комментарий от anonymous

И вообще, вы тут все долбанулись?
Какие груви? Бля, студентам надо в башку вдолбить что такое программирование вообще, на чем оно основано, и какие принципы надо соблюдать при написании кода. Заценивать ваши ебнутые моднявые хипстерские недоязычки им не просто не надо, а просто вредно блять.

И какие Си? Си блять вообще нельзя давать студентам, они от этого свихиваются и становятся полоумными ебанько, неспособными понять лямбды и замыкания.

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

anonymous
()

«С» умер даже не приходя в сознание ещё лет 15 назад. Тогда же стал попахивать С++, но на волне ООП-мании как-то продержался и превратился в раскрашенную мумию. Жабо - был никем и вырос в никого, поэтому говорить о «мэйнстриме» в контексте жабы - это дилетантство. Брат-уродец жабы под названием «си-диез» наоборот, под пинками мелкософта развился во вполне себе приятного преемника «сипипей» с намного более улучшенной безопасностью и продуктивностью.
Так что чтобы не срать в мозг студентам, я бы рекомендовал изучать C#, благо он и хорош, и востребован - студенты не будут плевать вам в спину, выйдя из стен института.
Сам профессионально работаю с C#, индустрия раскрутилась вовсю, так что многие вам спасибо скажут за _практичный_ и денежный инструмент.

matumba ★★★★★
()
Ответ на: комментарий от matumba

«С» умер даже не приходя в сознание ещё лет 15 назад.

так вот оно что, Михалыч :)

Жабо - был никем и вырос в никого

да-да, oracle, sun, ibm - все лохи, компании-однодневки :)

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

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

//поправил

shty ★★★★★
()
Ответ на: комментарий от anonymous

Все студенты преподов выгнать хотят)

А кто учить то их потом будет? Может ты?

user0xff
()

Ну че решили за двадцать страниц? Ничего? А нахрена эти двадцать страниц нужны, если и так было понятно что ни к чему этот срач не приведет?

stack_protector
()
Ответ на: комментарий от anonymous

это просто хайп и посему плохо

Агрументация у полиэтилена как всегда на высоте.

stack_protector
()

Как по-мне мало написать какой язык. Надо еще написать как учить и чему. Если бы я решал - я бы вообще с shell начал)

user0xff
()
Ответ на: комментарий от stack_protector

Ну че решили за двадцать страниц? Ничего? А нахрена эти двадцать страниц нужны, если и так было понятно что ни к чему этот срач не приведет?

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

shty ★★★★★
()

Я начинал программировать так: Pascal -> Delphi -> C++ -> C -> C++ -> Python -> PHP -> Java. И сейчас вполне могу розобраться в коде на этих языках сходу, но дописать сразу не могу т.к. работаю с одним-двома языками постоянно и все остальное забываеться. П.С. ну и коннечно всякие там шеловские скрипты ...

coirius
()

Оберон. Учит аккуратно кодировать. Вообще, это современный аналог Паскаля. И к вопросу о совместимости с сишным кодом, насколько я помню, был даже транслятор из Оберона в Си.

hobbit ★★★★★
()
Ответ на: комментарий от matumba

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

Что же ты про Ассемблер скажешь, друже?

Deleted
()
Ответ на: комментарий от hobbit

насколько я помню, был даже транслятор из Оберона в Си

есть даже виртовская книжка о том как написать компилятор оберона

shty ★★★★★
()
Ответ на: комментарий от aptyp

ну так они потом тоже будут писаться с помощью тех подходов, о которых рассказал Macil, и абстракция абстракцию на 1024 гигагерцовых машинах будет погонять

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

deis
()

1000чный комент в этом треде

/tread

nickionn ★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.