LINUX.ORG.RU

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


1

7

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

★★★★

Последнее исправление: aptyp (всего исправлений: 2)

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

Именно обслуживающие, улучшающие их и есть *чистые программисты*

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

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

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

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

AIv ★★★★★
()

Чёрт, вспомнилось про Бейсик.

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

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

10 INPUT "KOLVO LEGGINSOV", a
20 INPUT "KOLVO KURTOK", b
30 OPEN "tovary.dat" FOR INPUT AS #1
40 ...

В общем, народ даже не знал, как на русский переключиться. Но базу данных для учёта товаров на Бейсике написать осилил :D

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

В том то и дело, нет таких специалистов «ремесленники-кодеры» (они же программисты), они есть только в голове обывателя

Пардон, а кого выпускают тогда всякие кафедры программирования? :)

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

Я так понял Вы занимаетесь гидродинамикой?

Почти. Численным моделированием погоды и климата.

Вот там наверное будет про эффективность и тесты в т.ч.... ;-)

Да всё это уже пережёвано тысячи раз. Я кстати приведённый выше пример вот отсюда взял

http://www.scipy.org/PerformancePython

По ссыкле утверждается, что при решении уравнения Лапласа, фортран 77, обёрнутый в питон, лишь немного уступает чистому c++ (без питона !). Также утверждается, что фортран 90 (это который без циклов), обернутый в питон, в 2 раза быстрее f77, что делает его быстрее, чем чистый c++. Вот так оптимизация операций с массивами работает.

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

Более того, я не знаю ни одного успешного симбиоза скажем физика и прикл математика

А что такое физик не знающий математики? Математики, как обособленной науки вообще не существует (что бы вам не говорили так называемые «математики»), она есть лишь инструмент физики, а сама по себе она имеет нулевую ценность.

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

Понятие алгоритма знакомо? Вот по идее *чистые программисты* это люди, переводящие из псевдокода в код на С/Python/whatever, алгоритмисты - переводят из уравнений в алгоритмы, а уравнения по опытам теоретики составляют, экспериментаторы же опыты составляют, это если по науке смотреть. а так... есть понятие абстракции - абстрагируются от того, что именно хранится может в базе данных, или что может вычислять эвм, и делают бд и компиляторы соответственно.

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

Программистов же! Даже специальность есть такая...

Я их очень уважаю, правда, они гораздо лучше меня знают как писать программы. Беда в том, что им очень трудно объяснить что надо написать и совершенно невозможно объяснить почему надо написать именно это (а не скажем засадить все в реляционную БД).

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

Пардон, а кого выпускают тогда всякие кафедры программирования? :)

Кафедры программирования существуют при профильных ВУЗах, студенты там, помимо кодинга, довольно глубоко изучают профильные предметы.

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

Понятие алгоритма знакомо? Вот по идее *чистые программисты* это люди, переводящие из псевдокода в код на С/Python/whatever, алгоритмисты - переводят из уравнений в алгоритмы

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

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

Где физика использует теорию чисел, например?

Математика — это язык, а физика — частный случай.

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

Чистые математики с тобой поспорят
Как и представители других наук, математика везде используется вообще то
Ценность, как и цена, понятие субъективное. man игра в бисер.
Математика сама по себе изучает свойства математических объектов, которые соответственно используются в других науках, т.е. точно не нулевая ценность. Вот теория чисел сколько лет была игрушкой - каноничный пример.

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

И что же именно сковывало движения? Нормальный логический тип? Проверка выхода индекса за пределы объявленного массива? Отсутствие глобальных переменных? Отсутствие явных указателей?

Поверь, при использовании официальной IDE для работы на Java, никаких неудобств вы и не заметите.

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

Да всё это уже пережёвано тысячи раз.

Вы по ссылочке то сходите (третий раз уже тут привожу, епрст!) www.linux.org.ru/wiki/en/User:AIv/LRnLA

Там это чуток под другим углом разжевано. Погодой и климатом в планах у нас есть...

Также утверждается, что фортран 90 (это который без циклов), обернутый в питон, в 2 раза быстрее f77, что делает его быстрее, чем чистый c++

Я плакаль. По приведенной мной ссылке сказано, что С++ с Питоном для Ваших задач в т.ч. быстрее фортрана 90 на порядок-два. В частности, то что Вы считаете на кластере (если считаете) можно считать на персоналке.

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

Официальная IDE для работы на Java? Это Netbeans что ли? Делал правда в эклипсе, но раньше нетбинс был няшнее, и пользовался им, правда для C++
Мешало тупо то, что метод Main является статичным, приходилось всё, что использовалось в нём, делать тоже статичным, а до компиляции я успел почти всё написать, и пришлось делать рабскую работу.

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

Математики, как обособленной науки вообще не существует (что бы вам не говорили так называемые «математики»), она есть лишь инструмент физики, а сама по себе она имеет нулевую ценность.

ну глупость же

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

Вот мои студентики как бы знают математику, и предметную область подучили, в чём я недавно удостоверился, но вот составить алгоритм не смогли, не то мышление.
Про стандартные алгоритмы согласен, сам до сих пор не помню всех методов string,vector и т.п., хотя вроде лет 5 ими пользуюсь.

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

По правде говоря я возблагодарил Г-да, когда стал писать на Java. За исключением Паскаля это был удобнейший язык, ну и IDE, какие я тогда знал.

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

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

Ни один теоретик не в состоянии написать числ схему для своих уравнений. Это вообще отдельная наука...

Ни один спец по числ методам не в состоянии написать эффективный числ. метод не задумываясь о деталях реализации.

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

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

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

Эммм... а в чем проблема? Можно же логику приложения разнести по другим методам и классам, ну если только это не хеллоуворлд или не код в стиле «а свалю-ка я все до кучи».

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

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

Каково прикладное значение для человечества? По моему мнению - нулевое. Это моё частное мнение. Если посмотреть шире, где корни современной математики? Это развитие теории суперструн, М-теории и пр. Не будь этих физ. задач, не было бы и развития математики.

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

Это был код в стиле - в Main все действия, поля класса - основные переменные, важные для задачи, другие методы класса - необходимые функции. Задачка была не настолько сложная, чтобы её ещё и по классам раскидывать - решение операторного уравнения методом Ритца, т.е. вычисление интегралов, решение СЛАУ методом Холецкого, и всё. Универсальным языком Яву(т.е. одинаково подходящим как для хелловордов, так и для энтерпрайза) не назову:-)

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

Ни один теоретик не в состоянии написать числ схему для своих уравнений. Это вообще отдельная наука...

Ни один спец по числ методам не в состоянии написать эффективный числ. метод не задумываясь о деталях реализации.

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

В вашем утверждении я бы заменил «Ни один» на «Плохой» и это стало бы правдой.

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

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

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

Не видел я ещё ни разу, чтоб у кого-то c++ код получался быстрее фортрановского. В лучшем случае сравнимая производительность. А наоборот бывает, да.

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

Пробовал. Пробовал на C и С++ в Нетбинсе писать, в общем было удобно и опасными частями этих языков старался не злоупотреблять. Все чин-чинарем, еще Питон пробовал, но не осилил сделать совместимость между версиями 2.6 и 3.1.

Кстати С\С++ в Студии просто ужасно выглядят, после Нетбинса работать там одно мучение было.

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

Не видел я ещё ни разу, чтоб у кого-то c++ код получался быстрее фортрановского.

+100

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

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

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

Как сказать, как сказать...:)

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

Право же, смешно: увлекательно, по-вашему, это что - «напиши игрушку для своего мобильника»?
Без Java это вряд ли получится, не так ли?!

А что касается «матанов», равно как и прочих этил-меркаптанов, то вот, извольте:

asserta(foo :- not foo.).
# foo.

или же

let foo = not foo
# foo

в равной мере вешает что gprolog, что ghci.

Если повар (логика высказываний на основе алгебры множеств) нам не врёт,
то foo следует приравнять к универсуму рассуждения, не так ли?

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

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

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

В частности, то что Вы считаете на кластере (если считаете) можно считать на персоналке.

Ви будете мене сказки рассказывать?

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

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

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

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

В вашем утверждении я бы заменил «Ни один» на «Плохой» и это стало бы правдой.

Скажем так - я работал с разными теоретиками (общепризнано очень хорошими), и они в числ методах ничего (или почти ничего) не понимали.

про программистов и спец. по числ методам та же история...

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

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

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

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

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

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

А другие языки не пробовал?

Забавно, что когда я впервые увидел Си, я был просто в неимоверном восторге. Ещё бы, это было после программируемых калькуляторов, Focal'а, Basic'а (не qbasic). Правда, любовь к Си была пару лет сугубо теоретической (машины раньше не позволяли по ресурсам), но потом, после перехода к практике, любовь только усилилась, а позже, с освоением Си++ вылилась в сотрудничество на многие годы...

С Java я столкнулся уже на заре работы с Си/Си++ где-то к 1997-му, но впечатления язык не произвёл. Синтаксис Си-подобный, производительность никакая, практическое применение неоправдано.

Так и была Java отброшена ещё где-то лет на 6.

И только, где-то, в 2003-м я ввязался в большой проект на Java и оценил по достоинству его мощь в сложных системах. На Си/Си++ я бы на таких задачах просто повесился бы. Ну, или реализовывал бы их на порядок дольше.

Так что сегодня, если припрёт, на Си/Си++ я возьмусь писать. Но, скорее всего, до такой крайности не дойдёт, и если понадобится, то буду себе писать на Java.

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

А я всё жду результатов модели глобальной циркуляции, посчитанной на персоналке чудо-методами. Слюни уже текут.

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

Ви будете мене сказки рассказывать?

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

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

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

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

Но просто они не просто обрабатывают, а составляют [bold]математические[/bold] модели, поэтому и называются математиками)))

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

Ммм, мощь, мощь, может это просто другое название спокойствия, которую даёт её строгость? P.S. сложные системы не писал на ней.

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

может это просто другое название спокойствия, которую даёт её строгость?

Именно так :)

сложные системы не писал на ней

Ну, тут сложно сказать, сложно или нет:

$ find l2j/trunk/java -iname '*.java'|xargs cat|wc -l
171665

Но я не один это делал, ядро было человек десять, наверное. Это MMORPG, на среднем железе тех лет что-то под 1000-1500 человек онлайн, за 40 тыс. активных мобов и NPC.

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

Скажем так - я работал с разными теоретиками (общепризнано очень хорошими), и они в числ методах ничего (или почти ничего) не понимали.

Пообщайся с экспертом в гидродинамике пять (ну хорошо, десять) минут - и тебе захочется его убить!

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

ммм, так Вы один из тех, кто развратил нынешнюю молодёжь:-)
Это достаточно сложно, даже если поделить на 10, будет 17к строк, я пока за свою жизнь столько не написал)

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

Вы по ссылке сходили?

О чём мне этот поток сознания должен сказать? Что у некого гения есть чудо-идея, на которую нет денег? Я это понял. Дальше что?

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

Вот когда будет, тогда и поговорим.

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

fuzziCLIPS

Извините, сналёту не заметил вашу реплику.

Не совсем оно эзотерично, мягко выражаясь.
Хотите - верьте, хотите - нет (пруфов - не будет), но для ПВО ВС РФ оно эдак активно используется именно для разработки СППР'ов.

(Сам, когда впервые услышал про такое, чуть со смеху не подох.)

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

ммм, так Вы один из тех, кто развратил нынешнюю молодёжь:-)

Не, мы так, сбоку уже прицепились и то, потому что сами развратились :)

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

Ну в случае modifyIORef у нас лямбды не будет, так?

Не понял. Почему не будет?

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

Так переменная «валидная программа» пробегает моменты времени?

Она пробегает множество валидных программ. Не идиотничай.

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

union list { struct zero {int i;} z; struct cons {int head; list* tail;} c; };

Вот привыкли вы, лисперы, к нечитабельному коду.

union list {
  struct zero {
    int i;
  } z;
  struct cons {
    int head;
    list* tail;
  } c;
};
Это как раз чистой воды фигня. Хотя бы потому, что у тебя нет способа отличить, какой именно вариант реализуется — z или c.

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

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