Çoxməqsədli dil
Çoxamaclı dil - (ingiliscə general-purpose language, rusca универсальный язык) – Ada, Pascal, C, Forth və BASIC kimi ən müxtəlif məqsədlər və tətbiq sahələri üçün nəzərdə tutulmuş proqramlaşdırma dili. Bununla da universal dillər, yalnız verilənlər bazasında istifadə üçün nəzərdə tutulmuş SQL kimi dillərdən fərqlənir. Program - hər hansı məsələni həll etmək üçün kompüter dilində yazılmış kodlardır. Yəni biz məsələni həll etmək üçün kompüterdə proqram yazırıq. Proqramlaşdırma dili - proqramı yazmaq üçün isə bizə proqramlaşdırma dili lazımdır. Hal-hazırda çoxlu proqramlaşdırma dilləri var. Məsələn: C, C++, Java, Smaltalk, Pascal, Visual Basic, Visual FoxPro və s. Proqramlaşdırma dillərin müxtəlif səviyyələri var. Əsasən 5 qrupa ayırırlar: Çox yüksək səviyyəli dillər və ya vizual dillər: Access, FoxPro, Paradox, XBase, Visual Basic. Yüksək səviyyəli dillər (Bunlara bəzən alqoritmik dillərdə deyilir): Pascal, Basic, Fortran. Orta səviyyəli proqramlaşdırma dilləri: C, C++ Aşağı səviyyəli proqramlaşdırma dilləri: Assembly language Maşın dili: Ən aşağı səviyyəli dil olub 0 və 1 lərdən ibarətdir. Bundan başqa proqramlaşdırma dillərini ayrı 2 qrupa bölmək olar: Prosedur proqramlaşdırma dilləri (Pascal,Basic), Obyekt yönümlü proqramlaşdırma dilləri (C++, C#, Java, Smaltalk ). Hər hansı proqramlaşdırma dilini istifadə etmək üçün isə bizə ilk növbədə kompilyator lazımdır. Kompilyator olduqdan sonra biz öz proqramımızı mətn redaktorunda (məsələn: Notepad) yaza bilərik. Lakin çox biz İDE, yəni proqramlaşdırmanın inteqrallaşmış mühitindən istifadə edirik. Sadə dillə desək, bizə bir mühit verilir, orda komponentlər olur və bunlardan istifadə edərək biz öz proqramımızı yazırıq. Və ən əsası proqramlaşdırmanı öyrənməyin yolu proqram yazmaqdır (təkcə oxumaqla proqramist olmaq olmaz). İngiliscə daha yaxşı çıxır. Learning programming is programming. Müasir proqramlaşdırma dilləri – hansı daha yaxşıdır? Müasir zamanda bir çox proqramlaşdırma dilləri və mühitlər mövcuddur. Bu da öz növbəsində texnologiyanı seçmək barədə qərar verməkdə çətinlik törədir. Bəs hansı texnologiyanı seçmək daha məqsədəuyğundur? Hansı proqramlaşdırma dilini öyrənmək daha vacibdir? Bəlkə də ilk baxışdan əsasən aşağı kurs tələbələri üçün bu sual mübahisəli görünür. Təcrübələr göstərir ki, hal-hazırda müasir proqramçı Pascal, C, C++, Perl, PHP, javascript, C# (Si Şarp), Java dillərinin hamısını bilməlidir. Belə bir sual verə bilərsiniz ki, “Nə üçün bu dillərin hamısını bilməliyik? Axı bu kifayət qədər böyük siyahıdır?”. Pascal dili tədris üçün ideal dildir. Əslində Pascal dili məhz bu məqsəd üçün yaradılmışdır. Alqoritmləri öyrənərkən Pascal dilində proqram yazmaqla məsələləri həll etmək çox rahatdır. Alqoritmlərin tərtib olunması qaydalarını, mövcud olan klassik alqoritmləri hər bir proqramçı bilməlidir (yeri gəlmişkən bu sahədə ən yaxşı kitablardan ikisinin adını demək istərdim: D.E.Knuth – Art of programming və Thomas H. Cormen,Charles E. Leiserson,Ronald L. Rivest – Introduction to Algorithms). Bir çox kitablarda alqoritmlərin realizasiyası psevdo-proqramlarla göstərilir. Psevdo-proqramlar sanki Pascal dilində yazılmış proqramlara bənzəyir. C proqramlaşdırma dili Unix əməliyyatlar sistemi üçün AT&T Bell Labs. lobarotoriyasında Dennis Ritçi (Dennis Ritchie) tərəfindən yaradılmışdır. Sintaksisinin rahatlığına görə C dili qısa zamanda məşhurlaşmış və proqramçıların ən sevimli dillərindən birinə çevrilmişdir. C dili hal-hazırda ən çox sistem proqramlaşdırması üçün istifadə edilir. Linux əməliyyat sisteminin nüvəsi (kernel) C dilində yazılmışdır. C++ dili C dilindən sonra Bern Straustrup (Bjarne Stroustrup) tərəfindən yaradılmışdır. C-dən ən başlıca fərqi ondadır ki, C++ obyekt-yönümlü (Object Oriented) proqramlaşdırma dilidir. Bu da müasir proqramlaşdırmada ən vacib anlayışlardandır. Praktiki olaraq C++ dilində həm sistem üçün, həm də digər məqsədlər üçün proqramlar yazmaq mümkündür. Bizə çox tanış olan Mozilla FireFox, MS Word, MS Excel, Notepad, Paint və s. proqramların hamısı C++-da yazılmışdır. Lakin C++-da verilənlər bazaları (database) ilə işləyən proqramları yazmaq o qədər də rahat deyil. Məsələ burasındadır ki, verilənlər bazaları ilə işləyən proqramların təyinatı bazada olan verilənlərlə işləməkdir. Bir çox hallarda bu cür proqramlarda sürət faktoru bir o qədər rol oynamır. Çünki sürət daha çox verilənlər bazası idarə etmə sistemlərindən (DBMS – Database Management System) asılı olur. Utilitlərin yazılmasında ən çox istifadə olunan dil C++ dilidir. Perl ilk olaraq mətnlərin manipulyasiyası üçün yaradılmışdır. Sonralar Perlin imkanları daha da genişlənmişdir. Hal-hazırda şəbəkə və sistem administratorlarının ən sevimli dillərindən biridir. Perl-dən veb proqramlaşdırmada (daha çox CGİ) da istifadə olunur. Lakin indiki zamanda veb-proqramlaşdırma üçün daha rahat vasitələr vardır. PHP dünyadakı bir çox veb-proqramçıların sevdiyi dildir. Diqqət yetirsək veb-saytların böyük bir hissəsinin yaradılmasında PHP-dən istifadə edilmişdir. PHP öyrənməkdə çox rahat və genişimkanlı dillərdən biridir. Əsas təyinatı veb-proqramlaşdırmada istifadədir. Lakin son zamanlar digər sahələrdə də istifadə olunmağa başlayır. Lakin PHP vasitəsi ilə scriptləri yazarkən bəzi təhlükəsizlik tədbirlərini (SQL İnjection, Remote Code İnclusion, XSS və s.) mütləq nəzərə almaq lazımdır. Bu tədbirləri nəzərə almadıqda həmin skriptləri çox asan üsullarla sındırmaq mümkün olur. PHP5 versiyası çıxdıqdan sonra PHP obyekt-yönümlü proqramlaşdırma dillərindən birinə çevrildi (əvvəllər OOP-un prinsiplərinə tam əməl olunmurdu). PHP-də yazılmış proqram serverdə icra olunur və yalnız nəticəsi klientə “göndərilir”. Lakin bəzən klient tərəfdə( client side) də proqramlaşdırmadan istifadə etmək məcburiyyətində qalırıq. HTML (HyperText Markup Language) isə adından göründüyü kimi yalnız işarələmə dilidir. HTML-in öz imkanları vasitəsi ilə heç bir əməliyyat aparmaq mümkün deyil. Bu cür hallarda javascript bizim köməyimizə çatır. Eyni təyinata malik digər bir texnologiya – VBScript də mövcuddur. Lakin VBScriptin bəzi imkanları məhduddur. Javascript vasitəsi ilə HTML Səhifənin DOM modeli üzrə bir çox əməliyyatlar etmək, səhifədə interaktiv elementlər (menyular, düymələrin basılmasında dərhal reaksiyalar və s.) yaratmaq mümkündür. Veb-proqramlaşdırma sahəsində məşğul olanlar üçün AJAX (Asynchronous javascript and XML) texnikasını da bilmək vacibdir. Bəzən AJAX-ı ayrıca bir texnologiya və ya dil kimi qələmə verirlər. Lakin, AJAX javascript və XML-dən istifadə etməklə bir vasitədir. Sadaladığımız bu dillərin təyinatları əsasən ayrı-ayrı olduğuna görə onlar arasında konkurensiya bir o qədər hiss olunmur. Lakin Java və C# arasında böyük bir rəqabət vardır. Bir çox proqramçılar Javaya bəziləri C#-a üstünlük verirlər. Hər ikisininin özünə məxsus üstün cəhətləri vardır. Əslində onlara sadəcə olaraq dil kimi yox, bir texnologiya kimi baxmaq lazımdır. Bu texnologiyalar vasitəsi ilə yaradılmış proqramlar ayrıca işləyə bilmirlər. Bu proqramlar birbaşa olaraq sizin kompüterdə yox virtual maşında işləyir. Bəs virtual maşın nədir? Virtual maşın – proqram şəklində bir kompüterdir. Həmin virtual maşında işləyən proqramlar virtual maşına normal kompüter kimi müraciət edir və virtual maşın öz növbəsində həmən müraciətlərə kompüter kimi reaksiya göstərir. Bir sözlə kompüteri emulyasiya edir. Nəticə etibarı ilə Javada və C#-da yazılmış proqramları istənilən yerdə, istənilən arxitekturalı kompüterdə, istənilən əməliyyatlar (Operating System) sistemində işə salarkən eyni cür işləyəcək. Yəni proqram kompüterin heç bir fiziki vəziyyətindən asılı olmur. Həmən proqramın işləməsi üçün yalnız və yalnız onun işləyə biləcəyi virtual maşın lazımdır. Java üçün virtual maşın (JRE – Java Runtime Environment) bir çox əməliyyatlar sistemi və bir çox arxitekturalı kompüterlər üçün mövcuddur. JRE Sun şirkəti tərəfindən yaradılıb. C#da yazılmış proqramın işləməsi üçün .NET Framework (dot net Freymvörk) lazımdır. .NET framework Microsoft şirkəti tərəfindən hazırlanır. Hal-hazırda yalnız Windows əməliyyatlar sistemi üçün olan versiyası mövcuddur. Lakin .NET Framework-un klonu olan MONO Project adlı bir layihə mövcuddur və onun vasitəsilə yazılmış proqramlar bir çox əməliyyatlar sistemində işləyir. Deməli, Java və C#-da proqram yazarkən, platforma haqqında fikirləşmirik və bu işimizi çox asanlaşdırır. Bundan əlavə bu texnologiyalar vasitəsilə bir çox VBİS-lərə qoşulmaq üçün modullar mövcuddur. Bu da VBİS-i seçərkən bir çox məhdudiyyətləri aradan qaldırır. Digər üstünlüklərə tiplərin asan çevrilməsi, unicode dəstəyi, şəbəkələrlə iş və s. misal ola bilər. Beləliklə böyük sistemlər yaradarkən bu texnologiyaların tətbiqi daha məqsədəuyğundur. Çünki bu texnologiyalardan istifadə etməklə proqram yazarkən demək olar ki, məsələnin məğzindən başqa digər problemlərin “qayğı”sına qalmağa ehtiyac qa