Why Delphi?

45 отговора 1515 прегледа
#1

Why Delphi?

Обичайния въпрос, който си задава бъдещия Windows програмист е: Какъв език да уча? Въпрос, достоен за древногръцки философ. Именно пренасяйки се на древногръцка вълна, ще се постараем да изследваме добрите и лошите страни на един от най-забавните, атрактивни и мощни езици - Delphi.
Оставяйки настрана историческите детайли, официалните ръководства и откровенията на създателите му, Delphi впечатлява със следните факти:
- Наследи прекрасната поредица Turbo компилатори на Pascal, Turbo Vision, TPW и даде в ръцете на огромното количество почитатели на Borland едно отлично средство за разработка в Windows среда.
- Първата истински визуална платформа. Редактора на форми, Object Inspector и интегрираната среда направиха истински бум, давайки възможност за изключително бързо изграждане на интерфейса на една програма, и последстващо лесно добавяне на код.
- Даде възможност да се прескочи началното изучаване на "анатомията" на Windows и да се работи в една наистина "Borland" среда.
- Всички възможности за прилагане на чисто Windows трикове - hooks, WinAPI и т.н.
За програмиста, свикнал да изгражда интерфейс в DOS среда, е доста трудно да свикне с идеята че за една "Hello,world!" програма отиват към 100 реда код, че трябва да се грижи за това какво ще се случи ако потребителя затвори прозореца на приложението и други такива "безмислени" моменти... Не може да се отрича че това трябва да се научи, ако човек иска да бъде на "ти" с Windows. Само че както и M$ признава, за изграждане на един WinAPI програмист са нужни около 6 месеца - точно толкова колкото трябват и за научаване на MFC например. С Delphi този срок се смалява драстично - един добре запознат с Pascal програмист може да прави прилични приложения за Windows само след 2-3 седмици. Трябва да се отбележи, че разработчиците на Borland са изградили една среда, която "потапя" програмиста в "прозорците" постепенно, и то само докъдето той иска. Има твърде много програми, които използват единствено и само обектите и интерфейса на Delphi.
Това което поразява, е степента на завършеност на обектите в Delphi. Много задачи могат да бъдат свършени с просто присвояване, иначе казано с един ред код. Забавно е объркването на новоизпечения програмист, който се е блъскал над сложен проблем и открил, че решението е много по-елегентно, по-просто и по-кратко отколкото е очаквал. Класически примери са запис на масив от низове в текстов файл, присвояване на параметри /например шрифт/ на един елемет от друг с drag-and-drop, визуализиране на база данни в таблица и много други. Личи си, че екипа изработил йерархията и структурата на обектите е гледал много сериозно на задачата си. Крайния резултат е налице - кристален листинг и отличен резултат, спазвайки завета на Суворов: "Повече пот в учението, по малко код в програмата".
Интегрираната среда на Delphi е едно малко бижу. До болка е спазен принципа "Което виждаш, това и получаваш". Нагласяването на контролите по формите, свързването им една с друга и с кода доставя удоволствие, съпоставимо с ледена бира в горещ летен ден. Удоволствието се усилва от факта, че средата е отзивчива като френска любовница - всяка промяна на име /идентификатор/ се отразява навсякъде в кода, online help а е безупречен, a CodeCompletion технологията е нещо като шампанско с ягоди...
Това което е отлично за системно програмиране - message системата в Windows, е доста неприятна за класическо Application програмиране - вместо за кода си вие трябва да се грижите за едно гъмжило съобщения, събития и т.н. Delphi скрива неприятната част от работата и ви оставя да направите това, което само вие можете. От друга страна, Delphi ви оставя свобода да се намесвате навсякъде, където поискате. Тоест вие имате подръка една отлична секретарка, която върши черната работа без да мърмори, но и без да скрива нищо от вас, дори номера на сутиена...
Рано или късно всеки от нас ще поиска да бръкне по-навътре, или казано направо, ще му се наложи да ползва WinAPI. И отново приятна изненада - имате огромно количество предефинирани функции, с всички екстри на средата.
Мрежовите технологии - LAN и Internet - са отлично застъпени в Delphi. Мрежовите протоколи са реализирани с удобни за управление обекти. Лично аз написах първата си chat програма за един ден - тогава без да съм много наясно с тънкостите на TCP/IP. При това програмата беше доста прилична и удобна за работа. Е, доста попреписах от примерите, но с чиста съвест мога да заявя че схванах всеки ред. Оттогава съм имал доста случаи да ползвам TCP/IP с Delphi - винаги без проблеми. По същия начин стои и работата с Web - написах "кликарник" за 1 час. Моя славен "кликарник" реализира около 5000 клика за първия час от работата си и спести около 2-3 дена кликане за тест на банер-система.
Базите данни - мразени от едни и обичани от други - са доста добре застъпени в Delphi. Отминавайки BDE, ще кажа че с ADO Delphi е много сладък. С голямото количество обекти визуализирането на съдържанието и навигирането в една DB е доста забавно и приятно.
Трасирането в Delphi е безупречно, и поддържа всичко необходимо за капризния програмист - breakpoints, стъпково трасиване, watch променливи. Трудно е да се прецени какво още може да се поиска - освен прехващащ на логически грешки може би...
Едно от нещата които се струват трудно обясними на предубедения бъдещ разработчик - типизирането на променливите, върши прекрасна работа. И наистина, когато напишете оператор за присвояване, Delphi е достатъчно интелигентен да предлага само свойствата и променливите от съвместим тип. Казано образно, средата ви предлага само правилните възможности за присвояване - особенно ценно, ако се има в предвид че това е най-честата операция в Delphi.
Редактора предлага няколко много мощни средства - прескачане в дефиницята на дадена процедура или функция независимо в кой модул е дефинирана, скок от интерфейса в имплементацията на подпрограма, балонна помощ при трасиране, CodeExplorer с който навигацията в кода е изключително лесна.
Разработването и използване на компоненти в Delphi е много удобно - VCL и ActiveX са еднакво достъпни за създаване и прилагане. Освен това готов код може да се разпространява и като Units. Има огромно количество примери в Мрежата, както и много хора които ще ви подадат ръка в труден момент.
Можем още много да говорим за хубавите страни в Delphi - обектно-ориентирано програмиране, разработване на приложения в екип, огромно количество компоненти и т.н. За съжаление Delphi има и една леко неприятна страна - той оставя впечатление че Windows е среда, в която програмирането е песен. Горчивата истина лъсва когато се наложи системно програмиране - и човек се сблъсква с тежкия, отблъскващ WinAPI ...
В крайна сметка, ако пред вас стои въпроса - какъв език за програмиране под Windows да науча? - един от примамливите отговори е Delphi. С прекрасната среда, отлични възможности, светкавичен компилатор, чист код, развити обекти и йерархия той е попадение в десетката. Или дори в единайсетката...

чети и дишай по-леко
Отговор
в отговор на Pechenia #3

Re: Why Delphi?

towa za hello word e glupost :))
#include <windows.h>

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) {
MessageBox(NULL, "Hello World!!", "Hello", MB_OK);
return 0;
}
3 reda i towa e .. :))
ama Windosa ne e samo jamove .. :))
Za Delphi ne kazwam nisto, ne go razbiram i ne moga da go pliuq, no izkazwaniq ot roda kolko e trudno programiraneto pod windows sa gluposti .. :)
Prosto chowek trqbwa da chete ... towa waji mejdu wprochem za wsichko dori i za Delphi i Visual Basic... ne moje wsichko da naplqskash i sredata sama da ti razbere kakwo si iskal da naprawish .. :))

Отговор
в отговор на mitkohr #4

Хихихи

Типично изказване на човек, за който Windows-а е едно голяяямо C... Само че ако се беше пробвал да пишеш на чисто WinAPI щеше да узнаеш, че за да направиш един прозорец трябва да му заделиш памет, да му прехванеш затвярянето че да я освободиш, да му гласиш едно кило дивотии и чак тогава да показваш съобщения в него. Ама за някои хора хоризонта е приятно забулен в C/C++ мъглички... Това всъщност и акцентирах в статията - че езиците от високо ниво скриват доста неща. Ама явно прекалено добре ги скриват.
Поне се насмях...
Както виждам, и ти си се посмял... По добре щеше да направиш да погледнеш малко "зад" C-то. Там има още много материал за смях. Да ти е сладко!

чети и дишай по-леко
Отговор
в отговор на Pechenia #5

Re: Хихихи

А ти какво, като пишеш на Delphi, да не би да ползваш чисто WinAPI??

Отговор
в отговор на Pechenia #6

Re: Хихихи

Не знам дали си чувал, но и в езици като С/С++ има понятие "библиотека функции". И че човек може не да пише целия си код отначало, а да ползва библиотеките. И като научи как се ползват и какво има вътре ( а библиотеки за С дал господ!), забравя за Делфи.
А познаването на Виндовс архитектурата е задължително за програмист, иначе ще показваш само картинки на екрана.
Виж, ако си инженер, на който му трябва само за смятане, тогава няма значение Виндовса. Тогава може и на Fortran :))
А вече ако в проекта в който участваш, е решено да ползвате Делфи - моля.

Отговор
в отговор на ironcode #7

re

На Turbo Pascal for Windows съм писал на чисто /разбирам само на/ WinAPI. Голям отврат е. Затова и се зарадвах на Delphi. Но и в Delphi, както и с всеки друг език за Win се налага да се ползва WinAPI. Но само за по-специални цели.

чети и дишай по-леко
Отговор
в отговор на Pechenia #8

Re: Хихихи

abe pich kwo se prawish na otworen ... pisal sam i mnogo dobre znam kakwo trqbwa za da se suzdade window kakwo trqbwa da naprawq ... podrazni me izkazwaneto che za da pishe hello world trqbwa da izpishe tonowe kod kato stawa s 3 reda nali(i ne mi kazwai che ne raboti :)) ... kakto ti kazah windowsa ne e samo prozorci .... ne iskam da se zaqjdam s paskala i delphito ... no ti qwno kato si ponauchil nqkoi neshta si reshil che si hwanal gospod za bradata .. :))
neka samo da otbeleja che C-to e dobro kakto za Applcations taka i za Sistemno programirane.
Otwaratilo te e Win 32 API zashtoto ne si go razbral.
Poglednal sam i zad C-to ne se pritesnqwai, i sam razbral che nqma znachenie na kakwo pishesh, a kakwo pishesh i kak go pishesh .. :)
Ti kato iskash si skriwai nepriqtnite neshta, koito ne razbirash, az predpochitam da znam kakwo stawa ... :)

Отговор
в отговор на Гeнчo #9

Re: Хихихи

Ми чувал съм, че и съм пописвал по малко... А исках да подчертая, че просто "Hello , word!" само с WinAPI е тлъстичка задача. Ползвайки библиотека, не само WinAPI, задачата става изключително проста. Дали ще се ползва OWL /Object Windows Library на Borland/, MFC, Delphi, VB или нещо друго, идеята е точно тази - да се опрости труда на програмиста. Това е и смисъла на статията. Разбира се, ако човек не се е мъчил да пише само чрез WinAPI, е трудно да схване за какво става въпрос.
А познаването на Windows е наложително, но само доколкото трябва. Иначе ще стигнем до идеята че ако не познаваш детайлно WinAPI, съответно архитектурата на 80x86 фамилията /евентуално Alpha/, просто не си добър програмист. Тогава ще се окаже, че програмистите силно намаляват като бройка...

чети и дишай по-леко
Отговор
в отговор на mitkohr #10

Re: Хихихи

Хахаха... ми като знаеш че говоря за WinAPI що ми набутваш C пример???

чети и дишай по-леко
Отговор
в отговор на Pechenia #11

Re: re

Ами да. Значи и на Делфи, ако искаш, Hello Word може, освен на 3, да го напишеш и на 106 реда. Нормално е.

Отговор
в отговор на Pechenia #12

Re: Хихихи

ami shtoto ne pisha na pascal i delphi .. :))
i ne wijdam zashto si reshil da se zaqjdash, reshil si che kat delphi nqma wtoro i krai dai da pliuem wseki koi ne e suglasen s teb ... pishi si na delphi i ostawi drugite da reshat kakwo da prawqt ... kakto ti kazah nqma znachenie na kakwo pishesh, wajno e kak go pishesh ... :)

Отговор
в отговор на Pechenia #13

Re: Хихихи

nali ti napisah primerna programka za Hello world i e na chisto Win 32 API w 3 reda .. :))

Отговор
в отговор на Pechenia #14

Re: Why Delphi?

Ега си до къде стигна света, да ни убеждават че Делфи е върха!

Ти сам го каза - човек нищо не разбира от Windows и тръгнал да програмира на Делфи и вика: аз съм върхът! И това ако е програмиране... И аз не разбирам от коли, ама като натисна педала, тя тръгва. После ще му мислим как се управлява и спира...

А за да пишете по-малко - позвайте готови библиотеки и функции. Хайде сега обиколете Интернет за готова компонента която да пише "Hello world!" на един ред.

Тебе те е смутило това, че със стандартните дистрибуции на С/С++ не идват приложни библиотеки явно... И си мислиш че човек трябва да пише на API.
Ами така е, що трябва да напиша една програмка 20 КБ като мога да я направя 400 КБ. И после защо са тромави компютрите. И чак когато научиш Делфи достатъчно, за да направиш същата програмка 100 КБ, ще разбереш за какво става дума.

__________
Интелигентността в света е постоянна величина, но броят на населението расте... - Айнщайн.

Отговор
в отговор на geri #15

Всичко ми е ясно, само..

като шампанско с ягоди... не ми стана ясно

Отговор
в отговор на Pechenia #16

Re: Хихихи

heh :)))) mi tva si e aip funkciq be. dali she q zaobikolish sys c ili paskal se taq :))))

ne si utochnqval che "Hello World" trqbva da e v normalen prozorec, a ne v msgbox, dokolkot vidqh :)))))

a tva deto go pisa za poznavaneto na arhitekturata na OS-a i procesora... mi za da pishesh maximalno efektiven kod trqbva da gi poznavash inache stava boza, raboti ama oshte nqkolko takiva prilojenie i.......

IF JADEN THEN
GOTO BIRARIA;
Отговор
в отговор на mitkohr #17

Re: Хихихи

Neshto ne si shvanal... Primera za koito govorim e za otvariane na prozorec s Hello, word v nego, a ne za ipliuvane na message box. Tozi primer e daden s cel da se pokaze kakvo stava na nivo WinAPI kogato se pravi klasichesko prilozenie s prozorec s butoni za close i t.n.
Vsushnost celta na statiata e prouchvatelna - i komentarite sa mnogo pokazatelni. Ne tolkova za tehnichesko nivo, kolkoto za 'kozelskia' model na mislene na bulgarina i v chastnost na bg programistite. Ot basniata s dvete kozleta, deto kato se sreshtanli na mosta...
i stava vse po-interesno

чети и дишай по-леко
Отговор
в отговор на Aл Koxoнe #18

Re: Хихихи

Imash bira... Propuska za prozoreca e moi /i oshte niakolko :-(/, a chestno kazano celta e poveche prouchvatelna otkolkoto provokativana. Resultatite sa dosta intreresni...

чети и дишай по-леко
Отговор
в отговор на Pechenia #19

Re: Хихихи

:)))) kat sprq da se pishe v diskusiite za "Java GAME OVER" i ProSyst, ti sna skuchno a?

vajnoto e veselba da ima :)))))

IF JADEN THEN
GOTO BIRARIA;
Отговор
в отговор на Pechenia #20

Re: Why Delphi?

виж сега, нямам нищо против делфи,
но някои откровени лъжи ме подразниха.

например, че делфи бил първия визуален език, делфи съществува някъде от 95-та, а visual basic съм го ползвал 92 и то не първата версия.
преди делфи има и други визуани езици, не се сещам сега за имената им, но има.
и въпреки, че делфи е една много добре балансирана среда, според мен тя попада по средата, нито достатъчно high level (там vb определено я превъзхожда), нито достатъчно low level (там пък е /C++).
другия проблем който съм забелязал е, че борландските среди не само делфи, но и борланд С, до такажа степен скрижат нещата, че някои хора даже не знаят, що е то клас, виртуална функция и т.н. не че това е лошо, ако искаш да нашляпаш набързо някакъв код, но определено ако почнеш обучението си с борландски продукт, без преди това да имаш някаква теоретична подготовка или практически опит, добиваш доста осакатена представа за ооп.

Пламен
Отговор