Вверх ↑
Ответов: 964
Рейтинг: 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