Посоветуйте язык программирования
Jan. 11th, 2015 02:41 pmЯ всю жизнь программировал только на бейсике, на разных его версиях. Так получилось. Когда писал кандидатскую, набралось очень много таблиц с данными (это были морфологические признаки морских ежей), и я задолбался обсчитывать их на калькуляторе. Поэтому быстренько освоил бейсик (тогда персональные компьютеры IBM только начали появляться, и к ним прилагался язык GW-Basic). Освоил - и сразу почувствовал себя человеком. С тех пор не переучивался, сейчас пишу все свои программки на VBA в MS Access. То есть в программировании я дилетант, но опытный. Программированием пользуюсь сейчас для имитационного моделирования эволюционных процессов в популяциях. Подумываю об одной новой модели, но понимаю, что на VBA она будет работать невыносимо медленно. Насколько я понимаю, программа, написанная почти на любом другом языке, компилируемом, будет работать в разы быстрее. Вопрос такой: какой из этих языков мне будет быстрее и проще всего освоить? Времени, сил и желания преодолевать трудности и вникать в программистские проблемы - не имеется. Мне бы этот язык просто скачать (можно купить, если не слишком дорого), освоить за пару-тройку дней - и вперед. Т.е. главное, чтобы он был максимально простым в освоении для того, кто знает бейсик, без всяких интеллектуальных "понтов", но работал хотя бы раз в 10 быстрее.
no subject
Date: 2015-01-11 03:22 pm (UTC)#include
#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);
}
}
}
no subject
Date: 2015-01-11 03:22 pm (UTC)вот именно
есть у меня нехорошее подозрение, что автор хранит промежуточные данные не в объявленных переменных/массивах/структурах данных (да, на VBA можно делать связные списки и деревья, настоящие), а в таблицах или в полях форм, например
надо сначала разбираться с этим, а то я сомневаюсь, что там такая молотилка, что время на обработку собственно вычислений имеет какое-то значение
no subject
Date: 2015-01-11 03:23 pm (UTC)О гарантированной новичкам прогулке по граблям
Date: 2015-01-11 03:25 pm (UTC)no subject
Date: 2015-01-11 03:26 pm (UTC)Кстати, по поводу там выше советовали типа в VBA выпихнуть данные в массивы вместо аксеса... Так мне просто интересны размеры массивов. Или индексные таблицы тоже программно начинать выстраивать?
.net, а если большие объемы данных - поставьте сиквель и выносите обработки в триггеры и процедуры, тогда можно остаться и в аксессе в рамках ADP. У Вас тормоза идут из-за выборок или из-за математики?
no subject
Date: 2015-01-11 03:27 pm (UTC)полностью освоить за 2-3 дня ни один язык не получится. Но у питона все же уровень вхождения довольно низкий
no subject
Date: 2015-01-11 03:27 pm (UTC)no subject
Date: 2015-01-11 03:27 pm (UTC)А кстати на каком основании и почему вы утверждаете что нужно обязательно использовать некий сверхбыстрый язык программирование.
Может не в языке дело а в неоптимальном обращении с данными и можно в сотни раз ускорить работу совсем иным спосбом?
no subject
Date: 2015-01-11 03:27 pm (UTC)no subject
Date: 2015-01-11 03:28 pm (UTC)Питон уже почти стал стандартным инструментом учёного (вместе с библиотеками типа 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)
no subject
Date: 2015-01-11 03:28 pm (UTC)А регекспы и наследование у него есть? :))))
no subject
Date: 2015-01-11 03:29 pm (UTC)что сейчас не поддерживает наследование классов?
no subject
Date: 2015-01-11 03:29 pm (UTC)no subject
Date: 2015-01-11 03:30 pm (UTC)no subject
Date: 2015-01-11 03:31 pm (UTC)Если не нравится, то С++ . По скорости соизмерим с Java. Cреда отладки и всякие визуальные библиотеки от MS вам будет все-таки привычнее чем Java и др.
Если хотите быть в тренде - то Phyton. Но по производительности он на порядок ниже чем Fortran, С++, Java.
no subject
Date: 2015-01-11 03:31 pm (UTC)А почему нет? Если популяция большая, и нужно просчитать сотни тысяч поколений... И сделать это сотню раз, чтобы оценить разброс результатов из-за случайностей...
То есть вычисления простые, но их тупо много.
no subject
Date: 2015-01-11 03:32 pm (UTC)Осваивать вам будет легко, потому, что это ведь тоже Бейсик ;-)
А по быстродействию благодаря JIT-компиляции почти не уступает языкам, компилируемым в нативный код.
no subject
Date: 2015-01-11 03:32 pm (UTC)"Соскочить с Бейсика" не трудно. Трудность в том, что многие люди, овладевшие Бейсиком, языком алгоритмов при этом ухитрились не овладеть. Им придётся учиться другому языку программирования неделями. Автору этого ЖЖ - точно нет.
no subject
Date: 2015-01-11 03:33 pm (UTC)no subject
Date: 2015-01-11 03:33 pm (UTC)no subject
Date: 2015-01-11 03:33 pm (UTC)И напротив, научившись самостоятельно прилично писать на перле, я в свое время даже мог помогать студентам делать лабы на C# не зная его %-))
no subject
Date: 2015-01-11 03:35 pm (UTC)Вот несколько ознакомительных статей:
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.
no subject
Date: 2015-01-11 03:35 pm (UTC)У
no subject
Date: 2015-01-11 03:35 pm (UTC)Питон труднее шел: было легче читать и поддерживать, но труднее найти нужную конструкцию.
В R, правда, труднее найти нужную биб. функцию :)
Все относительно.
no subject
Date: 2015-01-11 03:37 pm (UTC)А непопулярен, по множеству причин: не имеет «красивой» морды. То есть вообще морды не имеет как таковой, хотя и есть сторонние IDE для него; до довольно недавнего времени сильно отставал в реализации ряда функций; ряд других функций имеют меньшую производительность.
Ну и самая главная причина — инерция мышления.
Та самая, по которой множество людей вместо LaTeX мучаются с Word или, в крайнем случае, не используют OpenOffice.