macroevolution: (anomalocaris)
macroevolution ([personal profile] macroevolution) wrote2015-01-11 02:41 pm

Посоветуйте язык программирования

Я всю жизнь программировал только на бейсике, на разных его версиях.  Так получилось. Когда писал кандидатскую, набралось очень много таблиц с данными (это были морфологические признаки морских ежей), и я задолбался обсчитывать их на калькуляторе. Поэтому быстренько освоил бейсик (тогда персональные компьютеры IBM только начали появляться, и к ним прилагался язык GW-Basic). Освоил - и сразу почувствовал себя человеком. С тех пор не переучивался, сейчас пишу все свои программки на VBA в MS Access. То есть в программировании я дилетант, но опытный. Программированием пользуюсь сейчас для имитационного моделирования эволюционных процессов в популяциях. Подумываю об одной новой модели, но понимаю, что на VBA она будет работать невыносимо медленно. Насколько я понимаю, программа, написанная почти на любом другом языке, компилируемом, будет работать в разы быстрее. Вопрос такой: какой из этих языков мне будет быстрее и проще всего освоить? Времени, сил и желания преодолевать трудности и вникать в программистские проблемы - не имеется. Мне бы этот язык просто скачать (можно купить, если не слишком дорого), освоить за пару-тройку дней - и вперед. Т.е. главное, чтобы он был максимально простым в освоении для того, кто знает бейсик, без всяких интеллектуальных "понтов", но работал хотя бы раз в 10 быстрее.

[identity profile] psilogic.livejournal.com 2015-01-11 10:56 am (UTC)(link)
если быстрее, то годятся только компилируемые, а их не так много - паскаль, си, си++, фортран, с некоторой натяжкой - java

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

среда разработки - официально бесплатная Microsoft Visual Studio Express 2013

освоить за 2-3 дня - вполне реально для вас и для тех задач, которые вы назвали: массивы, таблицы - это третья-четвертая лабораторная у студентов, изучающих Си. если с выводом графиков - уже сложнее, но не сильно, если возьмете уже готовый пример такой программы и замените в ней только непосредственно математическую/алгоритм рисования

[identity profile] natvalbr.livejournal.com 2015-01-11 03:37 pm (UTC)(link)
не создавайте сущностей без необходимости :)

мир языков Basic процветает! ;)

http://macroevolution.livejournal.com/186606.html?thread=12744174#t12744174

[identity profile] psilogic.livejournal.com 2015-01-11 04:03 pm (UTC)(link)
Может быть. Но без гарантий.

В случае C/C++ у меня по крайней мере есть уверенность, что с производительностью будет все так хорошо, как только возможно (ну, ассемблер, еще круче - но только в теории, уж слишком много тонкостей). В "сях" тонкость по большому счету одна - не забыть включить режим Release после отладки :)

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

[identity profile] natvalbr.livejournal.com 2015-01-11 04:50 pm (UTC)(link)
с производительностью? :) о-хо-хо...

знаете разницу между этими двумя строчками по производительности:
cout << "text" << std::endl;
cout << "text" << "\r\n";

[identity profile] psilogic.livejournal.com 2015-01-11 04:56 pm (UTC)(link)
конечно - flush буфера и без flush-а

[identity profile] natvalbr.livejournal.com 2015-01-11 05:05 pm (UTC)(link)
ну вот :)
а много ли об этом кто знает?

[identity profile] psilogic.livejournal.com 2015-01-11 05:09 pm (UTC)(link)
встречный вопрос - а много ли еще таких наколок?

а в других языках? ;)

[identity profile] natvalbr.livejournal.com 2015-01-11 06:06 pm (UTC)(link)
великое множество :(

std::vector res = some_function();

непрофессионал то поймёт что тут происходит и что сделали в С++11?

С++ - это ужасный язык из-за своей свободы.
А если у вас команда из 50-70 программистов да у которых разный уровень мастерства, то 500-800 багов в месяц вам гарантирован. По личному опыту.

[identity profile] psilogic.livejournal.com 2015-01-11 06:15 pm (UTC)(link)
уж чего чего, а свободы во всяких интерпретаторах выше крыши :)

ваш пример я не понял - обычный си-компилятор его просто обругает, а в 11 с auto вроде другой синтаксис. просветите?

[identity profile] natvalbr.livejournal.com 2015-01-11 07:15 pm (UTC)(link)
так я не сказал, что интерпретируемые языки лучше...

я пример про С++ приводил. И имел ввиду про копирование результата и "move operator" в С++11.

auto тут совсем ни при чём.

[identity profile] psilogic.livejournal.com 2015-01-11 07:47 pm (UTC)(link)
Ваш пример из совершенно другой проблемы. Если у вас есть коллектив программистов - у каждого свои привычки, стиль, профессиональные верования, аналогичные религиозным - у вас, конечно, возникнут какие-то трудности, с этим связанные, вам придется их так или иначе решать, и язык, конечно, где-то будет вам помогать, а где-то нет.

Но если вы - сам по себе, вы новичок, и вам не до экспериментов, а надо делать практическое дело - то достаточно просто четко понимать, что именно вы пишете и не писать конструкции, смысл которых вы не понимаете до конца. И тогда многие вопросы типа auto res = отпадут - просто потому, что вы не будете использовать move оператор, пока не разобрались, что это такое.

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

[identity profile] natvalbr.livejournal.com 2015-01-11 10:48 pm (UTC)(link)
Это проблема языка.

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

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

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

Да-да-да. Только вот мало кто помнит, что добрый компилятор вам на отсутствие конструкторов сам всё создаст и у вас просто физически не получится «использовать какую-то его часть, которую знаете». Надо знать всё и видеть подводные камни!

[identity profile] psilogic.livejournal.com 2015-01-11 11:04 pm (UTC)(link)
Фрезеровщики, слесари... аналогии - плохой признак в дискуссии :) Тем более, когда конкретный предмет вполне понятен и без аналогий. При чем тут сопровождение? Мы про управление большим коллективом профессиональных кодеров говорим или про какие-то философские вопросы о хамоне или про скромные и практические потребности одного доктора наук, причем, естественных? Вы уж определитесь - т.к. вопросы сильно разные. :)

С конструкторами все в порядке - когда про оператор присваивания в учебникех пишут учат, там это все говорится.

[identity profile] natvalbr.livejournal.com 2015-01-11 11:11 pm (UTC)(link)
говорится, только НИКТО не помнит этого после того как отучились, а потом вылавливаем баги!

мои примеры довольно хорошо отражают суть проблемы!

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

Вопрос один - как из детского сада IT в разработке продуктов сделать нормальную технологичную отрасль! Всё остальное - следствие. В СССР пытались решить эту задачу.

(no subject)

[identity profile] psilogic.livejournal.com - 2015-01-11 23:18 (UTC) - Expand

(no subject)

[identity profile] natvalbr.livejournal.com - 2015-01-11 23:47 (UTC) - Expand

(no subject)

[identity profile] psilogic.livejournal.com - 2015-01-11 23:49 (UTC) - Expand

(no subject)

[identity profile] natvalbr.livejournal.com - 2015-01-11 23:57 (UTC) - Expand

(no subject)

[identity profile] psilogic.livejournal.com - 2015-01-12 00:01 (UTC) - Expand

[identity profile] maz-d.livejournal.com 2015-01-12 05:38 pm (UTC)(link)
/ у фрезировщиков и токарей тоже свои стили да профессиональные верования? /

да =)

(no subject)

[identity profile] natvalbr.livejournal.com - 2015-01-12 18:32 (UTC) - Expand

(no subject)

[identity profile] maz-d.livejournal.com - 2015-01-12 18:36 (UTC) - Expand

(no subject)

[identity profile] natvalbr.livejournal.com - 2015-01-12 19:18 (UTC) - Expand

(no subject)

[identity profile] maz-d.livejournal.com - 2015-01-12 19:50 (UTC) - Expand

(no subject)

[identity profile] natvalbr.livejournal.com - 2015-01-12 20:19 (UTC) - Expand

(no subject)

[identity profile] maz-d.livejournal.com - 2015-01-12 20:39 (UTC) - Expand

(no subject)

[identity profile] natvalbr.livejournal.com - 2015-01-12 20:46 (UTC) - Expand

(no subject)

[identity profile] maz-d.livejournal.com - 2015-01-12 20:50 (UTC) - Expand

(no subject)

[identity profile] natvalbr.livejournal.com - 2015-01-12 20:52 (UTC) - Expand

[identity profile] guga50.livejournal.com 2015-01-11 06:34 pm (UTC)(link)
>> std::vector res = some_function();

в вектор res будет засунуто значение функции, при этом пофигу какой тип она возвращает. (ну тоесть он отныне будет тем типом который она в него вернёт)
при этом он ещё и неизменяемым будет.
Edited 2015-01-11 18:37 (UTC)

[identity profile] natvalbr.livejournal.com 2015-01-11 07:18 pm (UTC)(link)
эээээ...

я имел ввиду, что до С++11, функция возвращающая значение std::vector (не reference) - будет копирование данных. В С++11 придумали "move operator" для того чтобы не копировать данные.

[identity profile] natvalbr.livejournal.com 2015-01-11 07:19 pm (UTC)(link)
правильнее, конечно надо было написать так:

std::vector some_function();
...
auto res = some_function();

[identity profile] natvalbr.livejournal.com 2015-01-11 07:20 pm (UTC)(link)
правильнее, конечно надо было написать так:

std::vector some_function();
...
auto res = some_function();

[identity profile] zelych.livejournal.com 2015-01-11 03:40 pm (UTC)(link)
Питон тоже вполне себе компилируемый (при желании): http://cython.org/
Вы забыли уточнить, что "чуть больше времени" на C++ это примерно три года.

[identity profile] psilogic.livejournal.com 2015-01-11 03:50 pm (UTC)(link)
Я не предлагаю осваивать весь C++, а на том уровне, который нужен - это 3-4 лабораторки с подготовкой к ним. То есть, даже для среднего студента, который кроме этого предмета имеет еще 3-4 "пары", это - 3-4 дня.

[identity profile] zelych.livejournal.com 2015-01-11 04:06 pm (UTC)(link)
После трёх лабораторок люди пишут в сотне строчек и с ошибками то, что на питоне пишется в пять строчек (тоже с ошибками).

А три года нужно чтобы на С++ научиться делать что-нибудь такое за приемлемое время: http://nbviewer.ipython.org/github/barbagroup/AeroPython/blob/master/lessons/06_Lesson06_vortexLift.ipynb

[identity profile] psilogic.livejournal.com 2015-01-11 04:10 pm (UTC)(link)
или пишут в пять строчек то, что на питоне не пишется вообще никак :)

[identity profile] zelych.livejournal.com 2015-01-11 04:21 pm (UTC)(link)
А потом к этому коду делают биндинги для питона и остальное на нём пишут.

[identity profile] psilogic.livejournal.com 2015-01-11 04:25 pm (UTC)(link)
да это понятно, но тогда два языка учить придецца