Ch>Мнение простого программиста О языках программирования Паскаль и Си
Позволю себе провести некоторый анализ статьи
Во-первых, отношение к статье СРАЗУ сильно портит то, что размещавший информацию на сайте даже не удосужился ознакомиться с требованиями сервера chat.ru, где говорится, что файлы .html должны быть только в KOI8-R, а для Windows-1251 там применено расширение .htm. В итоге из Оперы пришлось вылезать, грузить IE и потом ещё ручками менять кодировку. В общем, если страницу выкладывал автор, то отношение к нему... несколько негативируется.
Но приступлю к статье...
>И сегодня Borland (ныне Inprise) продолжает всех радовать замечательными языками программирования: Borland Delphi, Borland C++ Builder, Borland Java Builder и др. Однако ведущим языком программирования вдруг становится Microsoft Visual C++.
Borland (кстати, снова Borland а не Inprise) уступил гонку MS выпустив совершенно бездарный компилятор BC4.x До этого времени он однозначно лидировал на рынке компиляторов (BC3.1 используется и сейчас!). Но версия 4.x ОЧЕНЬ сильно пошатнула его позиции. Тут во всей своей красе на рынок вышел Watcom со своим C++ 9.x и 10.x - вот это была сила... А потом подсуетилась и MS с VC4 - он при сопоставимой с Watcom эффективностью обладал на порядки лучшей средой разработки, так что Watcom тоже ушёл в прошлое. А Борланд, увы, с тех пор хорошего компилятора так и не сделал
BC5/BCB/Delphi генерируют ужасный объектный код
Так что это одна из немногих областей, где MS выиграла "честно" - просто выпустив намного лучший продукт.
>одним из условий стоял язык - Microsoft Visual C++. Почему не Borland C++ Builder, спросил я?
C++ Builder 1.x был только красивой игрушкой. Низкая эффективность компилятора, море ошибок в библиотеках, уродская документация... В общем, я на нём программировал очень много, но это была альтернатива VB, а не VC.
Кстати, эрудиция автора просто поражает. Ни Watcom C и Pascal, ни TopSpeed Pascal, ни Zortech C++... Он что, кроме Борланда и МС ничего не слышал? Тогда как он может оценивать? Впрочем, дальше...
>с целью извлечения максимальной прибыли [...], например настройки принтера в Microsoft Windows 98.
No comments...
>В Pascal существуют понятия головной программы, процедуры и функции. В языке C все это вместе взятое есть функции и требуется написание программы подгонять под это понятие. Однако, головная программа, процедура и функция - не есть одно и то же. Структурно Pascal вне сомнения оформлен лучше.
А если я хочу вызывать программу авторекурсивно? Писать костыли в видел отдельной функции? И чем идеологически (особенно, учитывая процедуру запуска программы) главная функция отличается от любой другой?
>вы попробуйте взять и написать программу на этих языках, которая из строки 'Иванов Иван Иванович' выделит 5-6 и 10-13 символы и сложит их вместе (ответ: 'ован И'), и обязательно положите рядом часы. На Pascale программист на эту программу затратит не более 5-ти минут, а вот на C значительно больше
Тип CString уже отменили?
И вообще, в Си/Си++ нет строк!
Есть массивы символов.
А для строк есть стандартные библиотеки.
>вы попишите программы для работы со строками на Pascale и С. Уверен, что сравнивать вам больше не захочется
Это точно. Т.к. для работы со строкми есть Perl. Ну-ка, сколько Паскаль (и Си) будут мучаться с простой задачей - всюду в тексте заменить дату вида mm-dd-yy yf dd.mm.yy? На Perl - s/(dd)-(dd)-(dd)/$2.$1.$3/g; Не нужно сравнивать между собой языки в тех вещах, где они не сильны
>Далее, в языке С отсутствует интервальный тип данных
А как в Паскале работать с ассоциативными массивами?
Я имею в виду теоретические удобство и возможность?
На C++ я делал так:
assoc ages;
ages["Петя"]=15;
Ну-ка, Паскалисты?
(Я уже молчу про стандартный тип complex - это просто удар по Паскалистам
)
>Результат выполнения программы: c=2.441406
А правильный результат: с=1.000000
Заменив первую строку тела программы на строку
double a,b,c,t1,t2,t3;
мы получаем правильный результат: с=1.000000
Господи, а при чём тут Си??
>Элементы массивов в языке Си нумеруются, начиная с 0. Это - мелочь, но удобным это назвать никак нельзя. Каждый программист сталкивался с ошибками, возникающими из-за нумерации с нуля.
Более ламерское, извините, заявление трудно придумать
>//Пример на Си:
int x[4]={0,2,4,6}, *i, y;
i=&x[0]; //i равно адресу элемента x[0]
y=*i; //y равно 0; i равно &x[0]
y=*i++; //y равно 0; i равно &x[1]
y=++*i; //y равно 3; i равно &x[1]
y=*++i; //y равно 4; i равно &x[2]
y=(*i)++;//y равно 4; i равно &x[2]
y=++(*i);//y равно 6; i равно &x[2]
Этот пример хорошо иллюстрирует введение абсолютной путаницы в элементарных вопросах программирования.
Этот пример демонстрирует поразительно низкий уровень программирования автора обзора на Си. Это азы и путаться в них - это значит просто не знать языка.
>Именно поэтому в некоторых языках программирования указатели отсутствуют вообще, например в Java Script.
Зато там есть куда более опасная конструкция - символические ссылки.
>Работа с файлами в Паскале организована проще, понятнее, все разложено по "полочкам", а программисту остается для написания фрагментов программы затратить минимум времени.
Ни Паскаль ни Си не ориентированы на файловую работу, так что и сравнивать их тоже некорректно по этому параметру. Сколько кода и там и там уйдёт на примитивную задачу перестановки строк файла в обратном порядке? А вот на PHP:
fwrite(fopen("out.txt","w"),reverse file("in.txt"));
или на Perl (подлиннее, но понагляднее):
open FILE, "in.txt";
@strings=<FILE>;
open FILE, "out.txt";
print FILE reverse @strings;
>Программируйте на том языке, какой Вы выбрали. А критерием оценки может служить только законченная программа.
Первая и последняя здравая мысль автора за весь обзор
В общем, могу сделать заключение, что данный обзор писал человек знающий Паскаль, но весьма поверхностно знакомый с Си (тем более - с Си++) и только слышавший о существовании других языков.
Не показательный пример
Гораздо показательнее другое.
Я знаю много программистов, которые перешли с Паскаля на Си (в период до 1995-го года, когда это невозможно ещё списать на бОльшую популярность Си++) и
только одного который сделал обратное. Вот это, по-моему, очень показательно. А тот, кто работал и работает на чём-то одном всегда будет хвалить то, чем пользуется