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

Date: 2015-01-11 10:01 pm (UTC)
From: [identity profile] int19h.livejournal.com
Есть еще Numba от Continuum (которые пилят Anaconda) - по сути JIT-компилятор отдельных числовых функций, работающий поверх обычного CPython (а не заменяющий его целиком, как PyPy). Отлично работает. Плюс за денюжку у них есть более навороченная версия, которая умеет еще считать на GPU.

Date: 2015-01-11 10:01 pm (UTC)
From: [identity profile] vmenshov.livejournal.com
Ага. Найдется 10 похожих библиотек с адовым холиваром между адептами. И все волосы повыдираешь, пока определишься с выбором.

Date: 2015-01-11 10:03 pm (UTC)
From: [identity profile] int19h.livejournal.com
Выше вам уже написал в общих словах, а конкретика здесь:

http://docs.continuum.io/numbapro/

Date: 2015-01-11 10:04 pm (UTC)
From: [identity profile] phlya.livejournal.com
А вот это спасибо, не знал!

Date: 2015-01-11 10:09 pm (UTC)
From: [identity profile] int19h.livejournal.com
Для разработки программ ноутбук, в принципе, и не заточен. Но он очень удобен, когда надо, скажем так, поэкспериментировать - т.е. загрузить какой-то массив данных, и подергать его так и эдак, с графиками и всем прочим (именно в процессе работы, не только как конечный результат). При этом, если где-то там появляются большие портянки кода, то вот их уже надо переносить в библиотеки, над которыми уже удобно работать из IDE - а потом грузить и дергать их из того же ноутбука. Но для очень многих научных задач много кода там не будет никогда.

Да, а что касается IDE - сейчас много всего хорошего и бесплатно, особенно под винду. PyCharm (https://www.jetbrains.com/pycharm/) (бесплатный в варианте Community Edition), а если человек привык к Visual Studio - PTVS (http://pytools.codeplex.com/) в связке с VS 2013 Community Edition.

(Про последний сразу честно скажу, что я - один из его разработчиков, так что это, в принципе, самореклама. Но мы умеем много гитик (http://pytools.codeplex.com/wikipage?title=Features%20Mixed-mode%20Debugging), которые в принципе не умеет больше никто, и которые могут в данной нише быть полезными.)

Date: 2015-01-11 10:11 pm (UTC)
From: [identity profile] int19h.livejournal.com
И да, Python в VS тоже уже есть. Т.е. если аргумент в плане знакомости среды разработки (хотя если честно, между Access и текущими версиями VS все же большая разница), то это не аргумент против питона.

Date: 2015-01-11 10:23 pm (UTC)
From: [identity profile] natvalbr.livejournal.com
это у вас надо спросить!

Date: 2015-01-11 10:24 pm (UTC)
From: [identity profile] natvalbr.livejournal.com
вообще-то начиная со 2й версии была возможность при установки скомпилировать дотНЕТ в нативный код

Date: 2015-01-11 10:31 pm (UTC)
From: [identity profile] fangorn-y.livejournal.com
Я тоже до сих пор пользуюсь билдером (шестым) и доволен :)
Менять его не собираюсь.
Думаю, что для научных задач билдер - лучшая среда для языка Си из-за удобных компонент, особенно TChart.

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

Date: 2015-01-11 10:37 pm (UTC)

Date: 2015-01-11 10:43 pm (UTC)
From: [identity profile] phlya.livejournal.com
Спасибо! Выглядит очень привлекательно, но когда ж такое же будет опенсорсное, а лучше еще и в numpy встроено?.. Эх.

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

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

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

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

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

Date: 2015-01-11 10:59 pm (UTC)
From: [identity profile] killerofrussian.livejournal.com
более того - можно просто конвертнуть существующий код на VBA в VB.net прямо в студии
Edited Date: 2015-01-11 10:59 pm (UTC)

Date: 2015-01-11 10:59 pm (UTC)

Date: 2015-01-11 11:00 pm (UTC)
From: [identity profile] killerofrussian.livejournal.com
тормоза = кривые руки, можно и 2+2=4 написать так, что будет 10 минут считать

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

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

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

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

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

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

Date: 2015-01-11 11:18 pm (UTC)
From: [identity profile] psilogic.livejournal.com
За всех не говорите, я про конструкторы помню.

Что касается остального - при чем тут тема?

Или просто вы поняли, что я вас внематочно слушаю и, так сказать, решили выговориться о наболевшем? :)

Date: 2015-01-11 11:47 pm (UTC)
From: [identity profile] natvalbr.livejournal.com
вы - исключение :) Приятное!

я к тому, что я даже не знаю как назвать человека, который советует учёному учить С++ язык.

Date: 2015-01-11 11:49 pm (UTC)
From: [identity profile] psilogic.livejournal.com
Так не весь, а только необходимый кусочек.

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

Date: 2015-01-11 11:57 pm (UTC)
From: [identity profile] natvalbr.livejournal.com
таки, аналогично про языки. Не знаю про вас, но я профессионально занимаюсь разработкой программ уже 20 лет. Но я не занимаюсь биологией! Думаю, вы тоже.

И советовать этот язык биологам - это вредительство, как минимум.

Date: 2015-01-12 12:01 am (UTC)
From: [identity profile] psilogic.livejournal.com
Ну так ведь и я сразу после школы не занимался профессионально разработкой программ, т.е. опыт был минимальный, но Турбо-Си пошел как по маслу - просто попала в руки книжка (не самая лучшая), а студентам разрешали доступ к классу IBM-PC-шек.

Date: 2015-01-12 12:07 am (UTC)
From: [identity profile] mifromru.livejournal.com
>Кхм. Я вообще-то С# изначально советовал. Эт раз.

Если сравнить C# с Java как для перехода с Basic, так и для использования в последующем непрофессионалом, то:
- на C# выше порог вхождения. Его реально освоить сложнее
- в C# проще накосячить, из Java убрали практически все возможности делать ошибки, которые не относятся к самому алгоритму. В C# остались те же unsigned парные типы, которые могут смешиваться в выражениях со знаковыми типами и приводить к "неожиданным" (неожиданным для написавшего код) результатам.
- "один файл с именем класса - один публичный класс на файл" как требование языка делает код Java более переносимым. Если мне потребовалось использовать какие-то классы из одного проекта в других проектах, я просто создаю maven проект для библиотеки, перетаскиваю файлы классов (и только их) без изменений в проект библиотеки, добавляю в нужные проекты в pom зависимости от новой библиотеки.
При этом мне не пришлось менять ни буквы ни в одном файле с исходным кодом, так как Java изначально мне ограничила возможность устроить из своего когда помойку, которую невозможно повторно использовать.
- Java является реально кроссплатформенной, особенно при использовании JavaFX. Да и уйти с той же Windows на тот же Mac разработчику (ну купил макбук тот же человек себе) - вообще не проблема. Уходить можно даже вместе с любимой IDE. И не париться о том, что забыли какие-то библиотеки в случае использования maven. Т.е. вообще об этом не думать. То же самое в C#?
- у Java больше комьюнити, больше библиотек (а использование maven делает их подключение к проекту вообще тривиальным - вставка нескольких строк в pom файл, даже не нужно беспокоиться о том, где взять библиотеку и куда ее на компе приткнуть)

>В джава будет не так?

В Java с этим намного лучше не только, чем в C (где выход за границу массива не контролируется), но и в C# за счет отсутствия прямоугольных массивов (в Java есть только массивы массивов, и когда вам нужно создать треугольную матрицу вы создадите треугольную матрицу, и выйдя за границы тут же получите exception со стектрейсом).

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

В случае C это совсем далеко не так (несмотря на его компилируемость), C# в целом не плох, но Java лучше

Date: 2015-01-12 12:32 am (UTC)
From: [identity profile] alex-197.livejournal.com
за второе - нужно вообще лишать компа на год:)
особенно сладко будет тому, кто потом будет это г... отлаживать:)

Date: 2015-01-12 12:37 am (UTC)
From: [identity profile] alex-197.livejournal.com
а с какой стати оно уничтожилось? лучший способь получить по башке - предположить, что оно будет работать

January 2019

S M T W T F S
  12345
6789101112
1314 1516171819
20212223242526
2728293031  

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 8th, 2026 03:49 pm
Powered by Dreamwidth Studios