Вверх ↑
Ответов: 963
Рейтинг: 12
#1: 2018-01-17 03:59:21 ЛС | профиль | цитата
Ну и чего там (в паскале) нет ? Я не про извращений С# или действительно кое где оригинальную java что есть в С++ чего нет в Паскале чтобы терпеть его выбрыки! Чего стоит вечная путаница в параметрах типа вот такого безобразия :
...недавно мучил я библиотеку OMarks...

int FindMarkersOpenCV( IplImage* Image,  int* All_Markers, MARKER* Markers, int Type_Marker, int Param )
{
int flags = -1;
if ( Image->nChannels == 1 && Image->depth == 8 ) flags = OMARKS_IMAGE8;
if ( Image->nChannels == 3 && Image->depth == 8 ) flags = OMARKS_IMAGE24;
if ( flags == -1 ) return -2;
int i, j;

char** Data_Result = new char*[(*All_Markers)];
int* Size_Data_Result = new int[(*All_Markers)];
int** Points4_Mark = new int*[(*All_Markers)];
int all = (*All_Markers);

for( i = 0; i < (*All_Markers); i++ )
{
Size_Data_Result[i] = MAX_CHAR;
Data_Result[i] = new char[MAX_CHAR];
Points4_Mark[i] = new int[8];
}

int result = FindMarkers( Image->imageData, Image->width, Image->height,
All_Markers, Data_Result, &Size_Data_Result,Points4_Mark, Type_Marker, flags | Param);

for( i = 0; i < (*All_Markers); i++ )
{
Markers[i].len = Size_Data_Result[i];
memcpy( Markers[i].result, Data_Result[i], Markers[i].len );
Markers[i].result[ MIN(Markers[i].len,MAX_CHAR-1) ] = 0;
for( j = 0; j < 4; j++ )
{
Markers[i].Points[j].x = Points4_Mark[i][j*2];
Markers[i].Points[j].y = Points4_Mark[i][j*2+1];
}
}

for( i = 0; i < all; i++ )
{
delete [] Data_Result[i];
delete [] Points4_Mark[i];
}

delete [] Data_Result;
delete [] Size_Data_Result ;
delete [] Points4_Mark;

return result;
}

|
.Ну как все с ходу понятно ?
(это и к вопросу про внятность кода ... где например объявления переменных может быть посередине кода функции,тут я разумеется разобрался, но это простерший случай ... )

Единственное разумное, что в Си есть это фигурные скобки вместо begin end ... но этого мне как-то совершенно недостаточно ... а условия &&, ==, != ...(это если кто не понял что-бы ":=" не писать при присваивании ) а любимые всеми Си-писателями i++ и условия через "?" по ходу формул... Возов методов класса через "->" ...
И это еще сущее мелочи, так "неудобства синтаксиса" реальных программах на С++ можно такие перлы "языковедения" обнаружить, что иногда хочется волосы на голове рвать !

Был у меня случай, когда чтобы понять алгоритм, имеющийся в исходниках на Си, мне пришлось декомпилировать EXE потому, что Си-код в этом случае получался значительно понятнее ... Это АЛИС !

Да, привыкнуть можно ... ( когда-то в середине 90-х я благополучно пережил период "жестокого на-Си-лия над разумом", ничего так, справлялся... но с какой радостью я вернулся обратно на паскаль словами не передать ! При программировании на С++ даже собственноручно написанный код буквально через неделю часто кажется полнейшим бредом... куда там самой запутанной схеме на Хайасме ! )
карма: 0

0
Редактировалось 5 раз(а), последний 2018-01-17 04:13:27