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

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

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

[identity profile] guga50.livejournal.com 2015-01-11 03:22 pm (UTC)(link)
продолжение :))

#include
[Error: Irreparable invalid markup ('<windows.h>') in entry. Owner must fix manually. Raw contents below.]

продолжение :))

#include <windows.h >
#include < ole2.h >
#include < stdlib.h>
#include < string.h>
#include < stdio.h>
#include " pshlo.h"
#include "shlo.hxx"
#include "clsid.h"

int _cdecl main(
int argc,
char * argv[]
) {
HRESULT hRslt;
IHello *pHello;
ULONG ulCnt;
IMoniker * pmk;
WCHAR wcsT[_MAX_PATH];
WCHAR wcsPath[2 * _MAX_PATH];

// get object path
wcsPath[0] = '\0';
wcsT[0] = '\0';
if( argc > 1) {
mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
wcsupr(wcsPath);
}
else {

fprintf(stderr, "Object path must be specified\n");
return(1);
}

// get print string
if(argc > 2)
mbstowcs(wcsT, gv[2], strlen(argv[2]) + 1);
else
wcscpy(wcsT, L"Hello World");

printf("Linking to object %ws\n", wcsPath);
printf("Text String %ws\n", wcsT);

// Initialize the OLE libraries
hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);

if(SUCCEEDED(hRslt)) {

hRslt = CreateFileMoniker(wcsPath, &pmk);
if(SUCCEEDED(hRslt))
hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);

if(SUCCEEDED(hRslt)) {

// print a string out
pHello->PrintSz(wcsT);

Sleep(2000);
ulCnt = pHello->Release();
}
else
printf("Failure to connect, status: %lx", hRslt);

// Tell OLE we are going away.
CoUninitialize();
}

return(0);
}
}
}

[identity profile] toshick.livejournal.com 2015-01-11 03:22 pm (UTC)(link)
честно говоря, сначала сам написал, потом прочитал Ваш ответ

вот именно
есть у меня нехорошее подозрение, что автор хранит промежуточные данные не в объявленных переменных/массивах/структурах данных (да, на VBA можно делать связные списки и деревья, настоящие), а в таблицах или в полях форм, например
надо сначала разбираться с этим, а то я сомневаюсь, что там такая молотилка, что время на обработку собственно вычислений имеет какое-то значение

[identity profile] pssshik.livejournal.com 2015-01-11 03:23 pm (UTC)(link)
пруф тесты на скорость с++ и жабы проведем?

О гарантированной новичкам прогулке по граблям

[identity profile] rodonist.wordpress.com (from livejournal.com) 2015-01-11 03:25 pm (UTC)(link)
С++ для чисто вычислительных задач? Можно, конечно, но это точно не для начинающих: слишком легко нахватать ошибок из-за неявного приведения типов.

[identity profile] ruinternet.livejournal.com 2015-01-11 03:26 pm (UTC)(link)
+1 за .net
Кстати, по поводу там выше советовали типа в VBA выпихнуть данные в массивы вместо аксеса... Так мне просто интересны размеры массивов. Или индексные таблицы тоже программно начинать выстраивать?
.net, а если большие объемы данных - поставьте сиквель и выносите обработки в триггеры и процедуры, тогда можно остаться и в аксессе в рамках ADP. У Вас тормоза идут из-за выборок или из-за математики?

[identity profile] maz-d.livejournal.com 2015-01-11 03:27 pm (UTC)(link)
/Но, боюсь, что ни R, ни, тем более, Python не подходят под определение "освоить за 2-3 дня"./

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

[identity profile] anshdo.livejournal.com 2015-01-11 03:27 pm (UTC)(link)
Python -- интерпретируемый язык, никаких преимуществ автору он не даст.

[identity profile] photo pro (from livejournal.com) 2015-01-11 03:27 pm (UTC)(link)
Я бы посоветовал бы перл или питон.
А кстати на каком основании и почему вы утверждаете что нужно обязательно использовать некий сверхбыстрый язык программирование.
Может не в языке дело а в неоптимальном обращении с данными и можно в сотни раз ускорить работу совсем иным спосбом?

[identity profile] orel41.livejournal.com 2015-01-11 03:27 pm (UTC)(link)
Если у Вас случайно окажется matlab )) то это самое оно. Язык простой, научных библиотек много , в том числе и реализаций "генетических" алгоритмов.

[identity profile] zelych.livejournal.com 2015-01-11 03:28 pm (UTC)(link)
Поддерживаю.
Питон уже почти стал стандартным инструментом учёного (вместе с библиотеками типа scipy, biopython).
При изучении нового языка важно иметь удобную среду разработки и возможность быстро получить какие-то результаты.
У питона для этого есть IPython Notebook (http://ipython.org/notebook.html) (там видео, его можно сразу со второй минуты смотреть).

Вот тут подборка ссылок с примерами использования A gallery of interesting IPython Notebooks (https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks)

Среди них, например есть Comparing different approaches to evolutionary simulations (http://nbviewer.ipython.org/github/yoavram/ipython-notebooks/blob/master/simulation%20frameworks.ipynb)
Edited 2015-01-11 15:31 (UTC)

[identity profile] photo pro (from livejournal.com) 2015-01-11 03:28 pm (UTC)(link)
>> бейсик охуенен
А регекспы и наследование у него есть? :))))

[identity profile] stalker-sid.livejournal.com 2015-01-11 03:29 pm (UTC)(link)
vba точно поддерживает, да и смешно
что сейчас не поддерживает наследование классов?

[identity profile] http://users.livejournal.com/__const__/ 2015-01-11 03:29 pm (UTC)(link)
Не понял, значит, вопроса. Извиняюсь.

[identity profile] http://users.livejournal.com/__const__/ 2015-01-11 03:30 pm (UTC)(link)
Вам шашечки или ехать?

[identity profile] 00000019.livejournal.com 2015-01-11 03:31 pm (UTC)(link)
Если чистая математика, и 2-3 дня на переход, то фортран. Математические библиотеки на все случаи жизни еще 40 лет назад написали. Поскольку используется исключительно для математических расчетов есть очень разогнанные версии, есть версии оптимизированные под многопроцессорные системы. Хотя не бесплатно конечно.
Если не нравится, то С++ . По скорости соизмерим с Java. Cреда отладки и всякие визуальные библиотеки от MS вам будет все-таки привычнее чем Java и др.

Если хотите быть в тренде - то Phyton. Но по производительности он на порядок ниже чем Fortran, С++, Java.

[identity profile] lvqcl.livejournal.com 2015-01-11 03:31 pm (UTC)(link)
> а то я сомневаюсь, что там такая молотилка, что время на обработку собственно вычислений имеет какое-то значение

А почему нет? Если популяция большая, и нужно просчитать сотни тысяч поколений... И сделать это сотню раз, чтобы оценить разброс результатов из-за случайностей...

То есть вычисления простые, но их тупо много.

[identity profile] anshdo.livejournal.com 2015-01-11 03:32 pm (UTC)(link)
VB.net
Осваивать вам будет легко, потому, что это ведь тоже Бейсик ;-)
А по быстродействию благодаря JIT-компиляции почти не уступает языкам, компилируемым в нативный код.

[identity profile] firrior.livejournal.com 2015-01-11 03:32 pm (UTC)(link)
Вы преувеличиваете порог вхождения. Трудность в том, чтобы быть программистом, состоит в овладении языком алгоритмов в общем виде. Никак не в синтаксисе конкретного языка программирования.

"Соскочить с Бейсика" не трудно. Трудность в том, что многие люди, овладевшие Бейсиком, языком алгоритмов при этом ухитрились не овладеть. Им придётся учиться другому языку программирования неделями. Автору этого ЖЖ - точно нет.

[identity profile] lvqcl.livejournal.com 2015-01-11 03:33 pm (UTC)(link)
Вам не кажется, что вы сейчас херней занимаетесь, и просто флудите?

[identity profile] firrior.livejournal.com 2015-01-11 03:33 pm (UTC)(link)
Ещё Brainfuck! Клёвый язык. А комменты в коде можно писать на Ыфкуиле.

[identity profile] photo pro (from livejournal.com) 2015-01-11 03:33 pm (UTC)(link)
я давно не видел бейсика, но то что видел 10 лет назад - было просто ужасно.
И напротив, научившись самостоятельно прилично писать на перле, я в свое время даже мог помогать студентам делать лабы на C# не зная его %-))

[identity profile] natvalbr.livejournal.com 2015-01-11 03:35 pm (UTC)(link)
есть компилируемый purebasic (http://www.purebasic.com/ ) Работает под виндой, линуксом и маком. Стоит 80 евро или бесплатно, если кода не больше 800 строк.

Вот несколько ознакомительных статей:
http://habrahabr.ru/post/176123/
http://geektimes.ru/post/64457/

Так же у Майкрософт есть Small Basic: http://smallbasic.com/
- бесплатная книга на русском: http://download.microsoft.com/documents/rus/visualstudio/SmallBasic.pdf
- курс обучения на русском: http://download.microsoft.com/download/F/1/1/F1185FCF-BC8B-475B-88FF-27C050B618FA/SmallBasic_Curriculum_RUS.zip
- руководство: http://download.microsoft.com/download/A/2/6/A260F08E-AD9D-4858-AB0C-EF37083776A0/Introducing%20Small%20Basic.docx
- русскоязычное сообщество: http://smallbasic.ru/

обзорная статья по языкам семейства Basic: http://habrahabr.ru/post/227711/

а так же ещё одно решение на базе языка Basic - Basic4Android: http://habrahabr.ru/post/142758/
то есть решение, позволяющее писать на Basic под мобильную платформу Android.

[identity profile] zelych.livejournal.com 2015-01-11 03:35 pm (UTC)(link)
> А разве не было у вас уже такого поста (или я вас с кем-то похожим путаю).

У [livejournal.com profile] progenes был http://progenes.livejournal.com/250141.html

[identity profile] meharher.livejournal.com 2015-01-11 03:35 pm (UTC)(link)
На Питоне я работал год (после, скажем, примерно 20 лет на всяких языках, включая C/C++/C#/Java etc. , на R последние 6 недель).
Питон труднее шел: было легче читать и поддерживать, но труднее найти нужную конструкцию.
В R, правда, труднее найти нужную биб. функцию :)
Все относительно.

[identity profile] http://users.livejournal.com/__const__/ 2015-01-11 03:37 pm (UTC)(link)
Более чем бесплатный: свободный.
А непопулярен, по множеству причин: не имеет «красивой» морды. То есть вообще морды не имеет как таковой, хотя и есть сторонние IDE для него; до довольно недавнего времени сильно отставал в реализации ряда функций; ряд других функций имеют меньшую производительность.
Ну и самая главная причина — инерция мышления.
Та самая, по которой множество людей вместо LaTeX мучаются с Word или, в крайнем случае, не используют OpenOffice.

Page 9 of 27