Programlamaya Giriş-1
Programlama nedir? Programlama dillerinin sınıflandırılması ve hangi programlama dilini kullanmalıyım?
Öncelikle forumlarda sıklıkla karşılaşılan bu büyük soruna cevap yazmak istedim… Neden diye soracak olursanız? Arkadaşlarımız programlama dillerini seçme konusunda hepimiz gibi kulaktan dolma yanlış bilgilerle aslında daha başlamadan programlama hayatını bitiriyor. Onun için Programlamaya yeni başlayacaklar veya öğrenmek istediği dilde dikiş tutturamayanlar lütfen bu yazıyı dikkatle okuyunuz.
Her türlü donanım birimi mevcut olan bir bilgisayar, bu donanımı amaca uygun olarak kullanan bir programı olmadıkça işe yaramayacaktır. Buna karşılık çalıştıracağı donanım olmayan bir bilgisayar programı da işe yaramayacaktır. Bütün bunlara dayanarak şunu söyleyebiliriz; yazılım ve donanım olmadan bilgisayardan söz etmek mümkün değildir. İşte bu yazılımlarda programlama dilleri ile hazırlandıkları için gelin öncelikle bazı teknik terimleri yazılımın tarihini ve dilleri iyice bir tanıyalım:
Yazılım Sınıfları:
- İşletim Sistemleri
- Derleyiciler, Yorumlayıcılar
- Editörler
- Bilimsel Mühendislik Yazılımları
- Görüntüsel Yazılımlar
- Mesleki Ve Ticari Yazlımlar
- Sistem Yazılımları
- Debug Programları
- Yapay Zekâ Yazılımları… Vb
Programlama Tarihçesi
- Abdullah bin Musa el-Harezmî, Algoritmik tanımlama ile problem çözümleme yolunu geliştirerek Bilgisayar Biliminin gelişmesine çok büyük katkı sağlayan Müslüman Bilim adamı. Algoritma dediğimiz ifadede zaten el-Harezmiden gelmektedir.
NOT: “ Algoritmik tanımlama ile problem çözümleme” yaklaşımıdır. Türk ve Müslüman kökenli Harzemli gerek “Cebir Bilim Dalının” kurucusu ve gerekse, Bilgisayar Programlama Kuramının temeli olan “ Çözüm ya da Program algoritması” tanımlama kuramının yaratıcısı olduğu, toplumumuzda yaygınca tanıtılmamıştır. Ne cebir ne de programlama kitaplarında yeterince vurgulanmamıştır. Üstüne basa basa söylüyorum. - Pascalline, Blaise Pascal –1649’da makinenin patentini aldı. Toplama ve çıkarma yapabilen cihaz. Pascal adında bilgisayar dili var.)
- Leibniz(1646–1716), Pascalline’ı geliştirdi. Çarpma ve bölme de yapabilen ilk mekanik cihaz.
- Ada LOVELACE Charles Babbage’ın yardımcısı –ilk programcı. Ada isimli askeri amaçla kullanılan programlama dili var
- George Bole, 1847 – Boole cebrini yayınladı. Sembolik mantık ve ikili sayı sistemi Von Neumann bilgisayarı Magnetik tamburlar üzerinde 0 ve 1’lerden oluşan makine dilinde yapıldı.
- Grace Hopper 1952 – ilk bilgisayar derleyicisini geliştirdi
- 1950 – COBOL ve FORTRAN yüksek düzey programlama dilleri gelişti.
- Bill Gates 21 yaşında iken bir arkadaşıyla birlikte Microsoft firmasını kurdu.
Şuan Windows işletim sistemi ve .NET platformu ile paraya para demiyor.
Programlama Nedir?
Program, bilgisayarın amaca yönelik işleyişini sağlayan bir grup koda verilen isimdir. Bu kodlar bütününe programlama dili denir. Bilgisayarı programlamak için, amaca uygun olarak çeşitli programlama dilleri kullanılır. Programlama dillerini yani kod öbeklerini iki ana grupta toplayabiliriz:
Programlama dillerinin seviyelerine göre sınıflandırılması:
İnsana En Yakın: Çok yüksek seviyeli programlama dilleri ya da görsel diller (Foxpro, Paradox, access, Vısual Basic,….
Yüksek seviyeli programlama dilleri :Pascal, Cobol, Fortran, Basic,…
Orta seviyeli programlama dilleri : C, ADA
Alçak seviyeli programlama dilleri: sembolik makine dilleri
Bilgisayara en Yakın: Makine dilleri (Bilgisayarın doğal çalışma dilleri, l ve 0’ ların dizilimlerinden oluşan)
Ve genel olarak ifade edilirse:
>> Düşük Seviyeli Diller >> Yüksek Seviyeli Diller
— Makine Dili
— Assembly -Görsel Diller -Görsel Olmayan Diller
— Visual Basic > C
— Delphi > Fortran
— Java > Cobol
— Visual C++ > C++
— .NET > Qbasic
> Pascal
Yine Programlama dillerini, temel yaklaşımlarına göre şu sınıflara da ayırabiliriz. Buna göre belli başlı programlama dili sınıfları şunlardır:
- Yordamsal (procedural / imperative) diller: C, Pascal, …
- Nesneye dayalı (object based / oriented) diller: Ada, Smalltalk, ABAP, Avenue…
- Fonksiyonel (functional) diller: Lisp, Haskell, …
- Mantıksal (logic) diller: Prolog, …
Görsel programlama dilleri program kodunun kısmen yâ da tamamen görsel biçimde çeşitli araçlar tarafından üretildiği dillerdir. Görselliğin ileri uçlarında program kodu bile bulunmayabilir. Windows sistemlerinde Visual Basic, Access gibi görsel diller yaygın bir biçimde kullanılmaktadır. Çok yüksek seviyeli dillere dekleratif diller de denir. Veritabanlarının yönetimlerinde kullandığımız dilleri bu gruba sokabiliriz. Yüksek seviyeli programlama dilleri daha algoritmik dillerdir. Bu dillerde önce işlerin nasıl yapılacağına ilişkin algoritmalar tasarlanır. Daha sonra bu algoritmalar program koduna çevrilir. Basic, Pascal, Fortran gibi dilleri bu grup içerisinde ele alabiliriz.
Programlama dillerinin uygulama alanlarına göre sınıflandırılması:
Bilimsel ve Mühendislik Diller: Bu diller daha çok bilimsel ve mühendislik problemlerinin çözümünde tercih edilirler. PASCAL ve C dillerini, birde geleceği pek parlak olmayan ve hala ısrarla kullanılan 90 canlı, dünyanın ilk yüksek seviyeli dili FORTRAN’ ı buna örnek verebiliriz.
Veritabanı Programlama Dilleri: Bu diller veritabanlarının genel olarak yönetiminde kullanılan dillerdir: DBASE, PARADOX, FOXPRO, SQL.. Kişisel bilgisayarlarda yaygın olarak kullanılanlardan bazılarıdır.
Yapay Zekâ Dilleri: bu diller insan davranışını taklit etmeye yönelik yapay zekâ içeren programların yazımında kullanılan mantıksal dillerdir. En ünlüleri: LISP ve PROLOG.
Genel Amaçlı Diller: Çok çeşitli konularda uygulama geliştirmek amacıyla kullanılan dillerdir. C ve PASCAL’ ı örnek verebiliriz.
Sistem Programlama Dilleri: Sistem programlarının yazımında kullanılan dillerdir. C ‘ yi sembolik makine dillerini bu grup içinde ele alabiliriz.
Programlama dili seçiminde öncelik bu dil ile hangi tür program yapacağımızdır. Örnek verecek olursak kendisinden portlar ile haberleşme programı istenen bir arkadaşımız bunu COBOL ile veya FORTAN ile yapmaya kalkışırsa ne olacak tabiî ki zaman kaybı. Ve hayal kırıklığıdır. Bu ifadeleri FORTRAN’ı veya COBOL küçük düşürmek istemek için söylerim bu diller kulvarlarında (COBOL: Muhasebe, FORTRAN: Bilimsel Mühendislik Yazılımları) .Yine bir örnekte web için verelim: daha çok web ile çalışacak bir arkadaşımız gidip FORTRAN ile veya daha web ile daha alakasız bir dil ile başlarsa çok büyük zaman kaybı yapmış olur. Peki, bu arkadaşımız ne yapmalı o zaman… İlk önce HTML dilini adam gibi öğrenmeli. Daha sonrada PHP, ASP gibi etkileşimli bir dile geçerek asıl programlamaya başlamalıdır.
Bilindiği gibi programlama dilleri öğrenilmeden önce programlama tekniği ve algoritma tasarımı mantığı öğrenilmedir. Yani bir yere ulaşmak için hangi araç kullanacağımızdan önce mutlaka o yolun nasıl olacağı hakkında bilgi toplamak veya fikir yürütmek gereklidir. İşte Algoritmada programlamanın temelidir. Çözüme ulaşmak için kullanılan yolu yâ da yollardan birini ( kendimize en uygununu ) seçmektir…
Peki, hangi programlama dili ile başlamalıyım?
Evet, ortalıkta birçok programlama dili var. Bu soru ( hangi programlama dili ile başlamalıyım ) daha çok sorulacak ve daha çok tartışmalar çıkacak gibi. Bana göre öncelikle hangi dil amacınıza uygunsa, hangi dilden zevk alarak programla yapabiliyorsanız, seviyorsanız ve en önemlisi para kazanıyorsanız en iyi dil bence odur.
Bir kere her şeyden önce kaynağa kolay ulaşmak önemlidir. Açıkçası bugün sanal ortamda yazılımcılar, bir grup oluşturarak tek düşünce gibi bilgi alış verişi yapılabiliyor. Bu konuda ülkemizi temel alacak olursak, ağırlıklı olarak DELPHİ programlama dilinin yaygın olduğunu görebiliriz. Yâda benim gözüme çok çarptı. J
“.NET” teknolojisi ile diller birleşmiştir. Bu yazılım sektörü adına yeni bir bakış açısı getirmiştir. Artık web uygulamalarında bile “.NET” sayesinde programlamada kullanılan mantık gibi tasarlamalar yapılabiliyor. Yazılım sektörünün ateşlendiği bu yıllarda rekabetin getirmiş olduğu birçok yenilik ile daha kolay programlamalar yapılabilmektedir.
SONUÇ VE DİL SEÇİM
O zaman dil seçimi için kendimize şöyle sorular soralım bunların cevaplarına göre seçimimizi yapalım:
- Yapacağım program hangi yazılım türündedir? Yâda hangi amaç(lar) için bu programı yazacaksınız?
- Programdan istenilen unsurlar nelerdir? Yani sonuçta oluşacak programınızdan ne tür beklentileriniz var?
- Hangi platform için tasarlayacağım bu programı? ( Örneğin: Windows, web, Linux, MS-DOS, Machintosh … vb gibi)
- Web veya network bağlantısı olacak mı?
- Aynı anda kaç kişi bu programı kullanabilecek?
- Kullanılacak değişkenlerde belirli bir ölçüt varmı?
- Seçtiğim dil güncellemeye ne kadar açık olacak? Veya programınızı hangi zaman aralıkları ile güncelleyeceksiniz?
- Programın sağlam mı olması gerek yoksa sadece hızlı olması sizin için yeterli mi? Veya her ikisi de gerekli bir unsur mu?
- Maliyet ve risk yönetimi nasıl olacak?
Sonuç olarak programın hangi dille yazıldığı hiç de önemli değildir. Aslında doğru düşünüp, hızlı çalışan, çok fazla problem çıkartmayan ve şık tasarlamadıktan sonra hangi dille yazılırsa yazılsın. Zamanın giderek önem kazandığı şu günlerde tasarım süresi kısalan ve hızlı güncellenebilir programlar tercih sebebi olsa gerektir. Yukarıdaki sorulara gerçekten net cevaplar bulup tabloya göre dilimizi seçmeliyiz:
Platform | Yazılım Türü | |||||||
DOS | Windows | Linux | Web | Sistem | Mühendislik ve Mat | Oyun | Yapay zekâ | Mesleki ve Ticari |
C | .NET | C | HTML | C | Fortran | VB | Prolog | COBOL |
C++ | C++ | C++ | ASP | C++ | PL-I | Delphi | C++ | C++ |
Assembler | Delphi | Java | PHP | Matlab | Java | C | ||
Pascal | Java | ADA | Java Script | C++ | Visual C++ | .NET | ||
Basic | Pascal | Basic | VB Script | .NET | Pascal | Delphi | ||
C | Lisp | Perl | VB | Pascal | ||||
Basic | Scheme | .NET | VB | |||||
VB | Kylix | C# | ||||||
Python | XML |
Bugün hali hazırda kullanılan pek çok programlama dili vardır. İhtiyaca göre programlama yaparken hangi programlama dilinin seçileceği önemlidir. Genel olarak bugüne kadar kullanılan programlama dilleri şunlardır:
· Basic
· Fortran · Pl/1 · Rpg · Cobol · Modular2,3 · Turbo C++ · Pascal · Cecil · Ada · Blue · Dylan · Eiffel · Erlang · Avenue · Pynton · Kylix
|
· Forth
· Haskell · Icon · Logo · Lua · Delphi · VBasic · PHP · Perl · SGML · XML · HTML · ASP · Java · ABAP · Beta · VB |
· Mercury
· Miranda · ML · Oberon · Prolog · Rexx · Ruby · Sather · SETL · Lisp · C · V C++ · VFocus Pro · Occam · Power Builder |
· Smalltalk
· Snobol · ABC · APL · Flash · Python · Tcl · Apple Script · Shell Script · VB Script · Metlap · CSH · SH · TSCH · .NET |
Arkadaşlar Yazılım Geliştirme uzmanı olabilmek için çok fazla ön koşullar yoktur.
Yazılım sürecine katılmak isteyenlerin orta düzeyde İngilizce bilgisine sahip olmaları
Yeterlidir. Şu an zaten hem internet üzerinde hem de kitapçılarda yeterli miktarda Türkçe kaynak bulabilirsiniz.
Ancak, sadece bir veya iki dil öğrenerek tam bir programcı olamayacağınızı ya da üstat seviyesine ulaşamayacağınızı da bilmeniz gerekiyor. Herhangi bir dilden bağımsız olarak programlama problemleri hakkında düşünmeyi öğrenmelisiniz. Yani algoritmalar dediğimiz çözüm yollarını bulmalısınız. Gerçek bir üstat olabilmek için, yeni bir dili, el kitabında yazanlarla, bildiklerinizi bağdaştırarak beklide bir kaç gün içerisinde öğrenebilir durumda olmalısınız. Bu, çok iyi bir programcı olmak için birbirinden çok farklı bir kaç dil bilmeniz gerektiği anlamına geliyor.
Eğer ciddi programlamaya girecekseniz, Unix’in ana dili olan C ‘yi öğrenmelisiniz. C++, C ile alakalıdır; birini öğrenirseniz, diğerini öğrenmek zor olmayacaktır. Her iki dil de, ilk dil olarak öğrenmek için uygun değildir ama kendinizi zorlarsanız gerçekten de C dili kaynak kullanımında tutumlu ve verimli bir dildir. Maalesef, C, bu verimliliği, pek çok kaynağın (bellek gibi) yönetimini doğrudan size bırakarak elde eder. Bu düşük seviyeli (donanıma yakın) kodlama karmaşık ve hataya açıktır ve hata ayıklamak için pek çok zamanınıza mal olur. Makinelerin güçlü olduğu günümüzde, makinenin çalışma verimliliği yerine sizin çalışma verimliliğinize öncelik tanıyan bir dil ile program yazmak daha akıllıca olacaktır. Sonuç olarak ben size VB.NET veya VB ile başlamanızı öneririm çünkü görsel bir dil gerçekten de işinizi ilk etapta bayağı kolaylaştıracaktır. Ama C’yi tercih etmenizi öneririm.
Not: 2010 yılından itibaren yazmış olduğum yazılar güncellenerek tekrar paylaşılacaktır.