Сравнение на C и Pascal
Веднага ще отбележа, че не съм пламенен привърженик нито на C ++, нито на Pascal. Всеки от езиците има предимства, но всеки, от своя страна, не е без недостатъци. Това важи и за други езици за програмиране. Имах възможността да се запозная с доста голям брой езици. Pascal и C++ са избрани, защото, първо, ги познавам много по-добре от други езици, и, второ, защото тези два езика са най-популярните (по мое мнение) сред програмистите. Да, считам се за право да спекулирам относно тези езици. Това е моето право потвърдено и tekmetrics.com:
Имах възможност да се запозная с истинското програмиране още в института, когато персоналните компютри бяха за колективно ползване, 286 процесор беше най-добрата мечта, изглеждаше, че 10 MB твърд диск никога не може да бъде запълнен докрай, а компилатор с библиотеки се побираше на една дискета. Компилаторите Turbo C и Turbo Pascal от Borland (сега Inprise) бяха най-популярните по това време. Любителите на Pascal (Pascalants) и любителите на C (изнасилвачите) имаха разгорещени спорове за любимите си езици. Лабораторията на Института по кибернетика, където работех тогава, избра езика C. Защо? Краткостта на писане на кода беше болезнено привлекателна - къдрави скоби вместо начало-край, знак за равенство в оператора за присвояване, вместо двоеточие със знак за равенство, най-обичаните оператори на всички времена: ++ и --. Например този код привлече вниманието ми:
#include void main( void ) int a=1, b=1, c; c = a+++++b; /*преброяване на броя на добавящите знаци*/ printf( "a=%d b=%d c=%d\n", a, b, c ); >
#include void main( void ) int i, x[10]; for( i=0; i 5[x] = 10; for( i=0; i Библиотеката Turbo Vision все още не е разработена и всеки програмистпрограмиран интерфейс прозорец-меню. Възможността за преобразуване на всеки указател в тип (void*) на езика C значително улесни задачата на разработката. От друга страна, същата тази възможност често водеше до ужасни последици. В крайна сметка можете да пишете всичко навсякъде, например във FAT. Най-често срещаната и в същото време най-трудната грешка за отстраняване беше грешката при използване на паметта. Компилаторът не можа да проследи такава грешка:
charstr[10]; . memset(str, 0, 20);
Мнозина бяха привлечени от езика C от механизма за използване на препроцесор, поддръжка за модулност на програмирането. Много бяха отблъснати от компилация с две преминавания. Паскал беше там тогава и все още е, най-голямото предимство на Паскал е неговата скорост на копиране.
Конкуренцията не беше само между C и Pascal. За езика C конкуренцията беше между компилатори от Borland и Microsoft. Лично аз винаги съм предпочитал компилатори с марка Turbo заради тяхната интегрирана среда, мощна помощна система и програма за отстраняване на грешки. Turbo Debugger беше признат от всички. Впоследствие, при преминаване към графично програмиране, функциите, чиито прототипи бяха дадени в graphics.h, допълнително засилиха позицията на Borland на пазара на компилатори.
По-късно дойде времето на C++ и Pascal с обекти от една страна и Windows от друга. Трябваше да променя мисленето си, трябваше да овладея нови методологии, принципи на разработване на програми. Всички винаги и навсякъде отбелязват, че програмите (системи, комплекси, автоматизирани системи за управление) са разработени с помощта на технология за обектно-ориентирано програмиране. Програмите, написани на "чист" C, не получиха разпространение поради потенциалната маса от грешки. Borland все още беше на върха. След пускането на поредица от компилатори за двата езикаC++ и за езика Pascal се появи най-добрият, според мен, компилатор за всички времена за DOS - Borland C++ 3.1 с Application's Framework. Да, върху него бяха разработени приложения и за Windows, а библиотеката с класове OWL помогна много на разработчиците да избягат от дивия брой API функции. Но Windows е отделен разговор. Използвах BC 3.1 специално за DOS много дълго време и лично аз много харесах този компилатор. Досега, ако трябва да напиша някаква малка еднократна помощна програма, предпочитам изпитания във времето BC 3.1 пред всеки друг инструмент за разработка на софтуер.
Следва продължение.
И ето вашите мисли:
Четох сравнение между C и Pascal. Аз съм програмист с 20 години опит и мога да говоря много и дълго по предложената тема. Не е трудно да се отгатне какъв ще бъде краят и заключенията на подобно сравнение. Искам обаче да попитам защо да сравняваме? Разбирам, че всичко се познава в сравнение и е полезно да се сравнява, но не винаги. Не можете да сравнявате езиците за програмиране само по отношение на тяхното собствено представяне. Не бива да твърдим недвусмислено, че автомобилите от серията ВАЗ са по-добри или по-лоши от автомобилите на Москвич. В някои отношения ще бъдем прави, в някои отношения ще грешим. Когато човек, по волята на съдбата, ежедневно изпълнява определена последователност от действия, той свиква с нея и друга последователност просто започва да го дразни. И има обяснения за подобно раздразнение. Бих искал да подчертая, че човек в момента не може да знае едни и същи два езика. Единият определено е по-добър от другия. Защо? Да, дори само защото отдавна не съм програмирал на друг или в единия има повече практически опит, в другия по-малко. Следователно дискусията винаги ще завърши в полза на езика, на койтопрограмиран по-дълго, повече опит, създадени повече програми и т.н. С уважение, Александър Василиевич Малигин.