macroevolution (
macroevolution) wrote2015-01-11 02:41 pm
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Посоветуйте язык программирования
Я всю жизнь программировал только на бейсике, на разных его версиях. Так получилось. Когда писал кандидатскую, набралось очень много таблиц с данными (это были морфологические признаки морских ежей), и я задолбался обсчитывать их на калькуляторе. Поэтому быстренько освоил бейсик (тогда персональные компьютеры IBM только начали появляться, и к ним прилагался язык GW-Basic). Освоил - и сразу почувствовал себя человеком. С тех пор не переучивался, сейчас пишу все свои программки на VBA в MS Access. То есть в программировании я дилетант, но опытный. Программированием пользуюсь сейчас для имитационного моделирования эволюционных процессов в популяциях. Подумываю об одной новой модели, но понимаю, что на VBA она будет работать невыносимо медленно. Насколько я понимаю, программа, написанная почти на любом другом языке, компилируемом, будет работать в разы быстрее. Вопрос такой: какой из этих языков мне будет быстрее и проще всего освоить? Времени, сил и желания преодолевать трудности и вникать в программистские проблемы - не имеется. Мне бы этот язык просто скачать (можно купить, если не слишком дорого), освоить за пару-тройку дней - и вперед. Т.е. главное, чтобы он был максимально простым в освоении для того, кто знает бейсик, без всяких интеллектуальных "понтов", но работал хотя бы раз в 10 быстрее.
no subject
Pascal язык для обучения... писать одно удовольствие. по качеству скомпилированного кода кто просматривал код в ассеблере не уступит Турбо си, , естественно если компилить без форм, а в досовское окно. Это конечно если нужно только самому, а не для дальнейшего трудоустройства... потому как борланды проиграли войну по сертификации мелкомягким еще лет 10 назад...
Насчет синтаксиса Си была шутка что язык придуман для того чтобы остановить прогресс в СССР..
Листинг си с операторами не читаемый. нужен только для выпендрежа .пример типа i-=++i+i++; могу бред написать давно не практиковал но смысл понятен .. это конечно при объектном программировании мало уже значит но все таки читабельность основ синтаксиса для начала изучения вопрос важный.
no subject
Си++ с перегружаемыми операторами - прекрасен. Вычитание может означать деление, а разыменование посыл трояна соседу.
> i-=++i+i++
ну и чё тут сложного? i станет равно - i - 2
no subject
сперва выполнится префиксный инкремент и И станет равно (И+1)
потом к нему добавится И. в результате (2И + 1)
потом выполнится постфиксный инкремент и И станет равно (2И + 2)
потом из первоначального И вычтется (2И + 2). и И станет равно (-2И - 2)
ну да, сходу промахнулся.
++i = i++
В итоге И станет (И+2)
no subject
no subject
хошь абстрактные классы городи, полиморфизм используй. не хошь морочиться - используй методы как функции внутри класса и ОО язык превращается в совершенно функциональный по сути... в чём проблема то?
большинство листингов которые я встречаю в инете даже на языках которые жёстко ОО например Джава, написаны так, что ясно, что автор проги особо в ОО не вникает и использовать эти возможности не хочет. Ну и флаг в руки... чё вытрёпываться если в тягость.
no subject
начальная школа
10 PRINT "HELLO WORLD"
20 END
средняя школа
(defun hello
(print
(cons 'Hello (list 'World))))
старшие классы
void main(void)
{
char *message[] = {"Hello ", "World"};
int i;
for(i = 0; i < 2; ++i)
printf("%s", message[i]);
printf("\n");
}
молодой специалист
#include
<b>начальная школа</b>
10 PRINT "HELLO WORLD"
20 END
<b>средняя школа</b>
(defun hello
(print
(cons 'Hello (list 'World))))
<b>старшие классы</b>
void main(void)
{
char *message[] = {"Hello ", "World"};
int i;
for(i = 0; i < 2; ++i)
printf("%s", message[i]);
printf("\n");
}
<b>молодой специалист</b>
#include <iostream.h>
#include <string.h>
class string
{
private:
int size;
char *ptr;
public:
string() : size(0), ptr(new char('\0')) {}
string(const string &s) : size( s.size)
{
ptr = new char[size + 1];
strcpy(ptr, s.ptr);
}
~string()
{
delete [] ptr;
}
friend ostream &operator <<(ostream &, const string &);
string &operator=(const char *);
};
ostream &operator<<(ostream &stream, const string &s)
{
return(stream << s.ptr );
}
string &string::operator=(const char *chrs)
{
if (this != &chrs)
{
delete [] ptr;
size = strlen(chrs);
ptr = new char[size + 1];
strcpy(ptr, chrs);
}
return(*this);
}
int main()
{
string str;
str = "Hello World";
cout << str << endl;
return(0);
}
no subject
[
uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
]
library LHello
{
// bring in the master library
importlib("actimp.tlb");
importlib("actexp.tlb");
// bring in my interfaces
#include "pshlo.idl"
[
uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
]
cotype THello
{
interface IHello;
interface IPersistFile;
};
};
[
exe,
uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
]
module CHelloLib
{
// some code related header files
importheader(< windows.h>);
importheader(< ole2.h>);
importheader(< except.hxx>);
importheader(" pshlo.h");
importheader(" shlo.hxx");
importheader(" mycls.hxx");
// needed typelibs
importlib("actimp.tlb");
importlib(" actexp.tlb");
importlib("thlo.tlb");
[
uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
aggregatable
]
coclass CHello
{
cotype llo;
};
};
#include "ipfix.hxx"
extern HANDLE hEvent;
class CHello : public CHelloBase
{
public:
IPFIX(CLSID_CHello);
CHello(IUnknown *pUnk);
~CHello();
HRESULT __stdcall PrintSz(LPWSTR pwszString);
private:
static int cObjRef;
};
#include < windows.h >
#include < ole2.h >
#include < stdio.h>
#include < stdlib.h>
#include " thlo.h"
#include " pshlo.h"
#include " shlo.hxx "
#include " mycls.hxx"
int CHello::cObjRef = 0;
CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
{
cObjRef++;
return;
}
HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString)
{
printf("%ws\n", pwszString);
return(ResultFromScode(S_OK));
}
CHello::~CHello(void)
{
// when the object count goes to zero, stop the server
cObjRef--;
if( cObjRef == 0 )
PulseEvent(hEvent);
return;
}
#include
[
uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
]
library LHello
{
// bring in the master library
importlib("actimp.tlb");
importlib("actexp.tlb");
// bring in my interfaces
#include "pshlo.idl"
[
uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
]
cotype THello
{
interface IHello;
interface IPersistFile;
};
};
[
exe,
uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
]
module CHelloLib
{
// some code related header files
importheader(< windows.h>);
importheader(< ole2.h>);
importheader(< except.hxx>);
importheader(" pshlo.h");
importheader(" shlo.hxx");
importheader(" mycls.hxx");
// needed typelibs
importlib("actimp.tlb");
importlib(" actexp.tlb");
importlib("thlo.tlb");
[
uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
aggregatable
]
coclass CHello
{
cotype llo;
};
};
#include "ipfix.hxx"
extern HANDLE hEvent;
class CHello : public CHelloBase
{
public:
IPFIX(CLSID_CHello);
CHello(IUnknown *pUnk);
~CHello();
HRESULT __stdcall PrintSz(LPWSTR pwszString);
private:
static int cObjRef;
};
#include < windows.h >
#include < ole2.h >
#include < stdio.h>
#include < stdlib.h>
#include " thlo.h"
#include " pshlo.h"
#include " shlo.hxx "
#include " mycls.hxx"
int CHello::cObjRef = 0;
CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
{
cObjRef++;
return;
}
HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString)
{
printf("%ws\n", pwszString);
return(ResultFromScode(S_OK));
}
CHello::~CHello(void)
{
// when the object count goes to zero, stop the server
cObjRef--;
if( cObjRef == 0 )
PulseEvent(hEvent);
return;
}
#include <windows.h>
#include < ole2.h>
#include "pshlo.h"
#include "shlo.hxx"
#include "mycls.hxx"
HANDLE hEvent;
int _cdecl main(
int argc,
char * argv[]
) {
ULONG ulRef;
DWORD dwRegistration;
CHelloCF *pCF = new CHelloCF();
hEvent = CreateEvent(NULL, FALSE, FALSE, LL);
// Initialize the OLE libraries
CoInitializeEx(NULL, COINIT_MULTITHREADED);
CoRegisterClassObject(CLSID_CHello, pCF, SCTX_LOCAL_SERVER,
REGCLS_MULTIPLEUSE, &dwRegistration);
// wait on an event to stop
WaitForSingleObject(hEvent, INFINITE);
// revoke and release the class object
CoRevokeClassObject(dwRegistration);
ulRef = pCF->Release();
// Tell OLE we are going away.
CoUninitialize();
return(0);
}
extern CLSID CLSID_CHello;
extern UUID LIBID_CHelloLib;
CLSID CLSID_CHello = { _/* 2573F891-CFEE-101A-9A9F-00AA00342820 */
0x2573F891,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};
UUID LIBID_CHelloLib = { _/* 2573F890-CFEE-101A-9A9F-00AA00342820 */
0x2573F890,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};
no subject
#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
no subject
ну прикольно же... разве нет?
no subject
i++ - вернет i, i = i+1;
++i - вернет i+2, i = i+2
i-=: i+2 - (2i+2) = -i;
проверка - http://codepad.org/zDNXo3AL
no subject
причём такое выражение на плюсах вообще запрещено...
no subject
no subject
в молодости столько было споров под пиво что круче си или паскаль, что доказывалось следующим образом ...естественно брался только синтаксис а не библиотеки ... писался код типа for i:=0 to 10 do компилировался в сом формат и смотрелся в дисассемблере ... паскаль побеждал ...никаких лишних инструкций голый аасеблер как будто писалось прямо на нем
no subject
no subject
no subject
no subject
«
А хохлы уси на Си, а москали на Паскале.
»
— Фольклор
«
Всех, кого ты не спроси,
Программируют на Си.
Нынче встретишь ты едва ли
Тех, кто пишет на Паскале
»
— Фольклор
Pascal (Паскаль, Паскакаль, Пасквиль, Поцкаль, Пасцал, Пашка, В-Пасть-Кал, Турба (устар.), Турбопаскаль (устар.), Труба (устар.), Делфя) — язык программирования, созданный в 70-х годах прошлого века известным Никлаусом Виртом, чтобы невозбранно дисциплинировать школьников и ступидентов, но позже ВНЕЗАПНО обнаружилось, что сей учебный язык может быть пригоден для написания реальных программ. Когда-то имел весьма солидную популярность, но сейчас ее подрастерял, сохранившись в основном в виде Delphi. Язык невозбранно привлекает возможностью писать почти как на обычном английском языке, а не ломать голову и пальцы о ++i + ++i, эзотерику истинности выражений (1/3 == 0) и (-1 > (unsigned int) 1) и прочих извращенных приёмов, принятых в C-подобных языках.