2010/11/14

PROGRAMLAMAYA GİRİŞ

İlerdeki yıllarda belki lazım olur die eklemek istedim :)

(Programlama nedir? Programlama dillerinin sınıflandırılması ve hangi programlama dilini kullanmalıyım? )
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 NEDİR?

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 Basıc,....)

Yüksek seviyeli programlama dilleri (Pascal, Cobol, Fortran, Basıc,...)

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ıflarada ayrılıra biliriz. 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. Basıc, 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 portlarla 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

Yakın zamanda çıkmış bulunan “.NET” teknolojisi ile diller birleşmiştir. Bu yazılım sektörü adına yeni bir bakış açısı getirmiştir. “.NET” ile ilgili daha teknik bilgiyi ileride “Cyber-Warrior” sayfalarından ( maXXTor farkıyla ) alabilirsiniz. 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 ( Nasıl sonuç ama J ama devamını okuyun…). 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ştime uzmanı olabilmek için çok fazla önkoş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 yalları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çektende işinizi ilk etapta bayağı kolaylaştıracaktır. Ama C’yi tercih etmenizi öneririm.


Bölüm–3 NESNEYE DAYALI PROGRAMLAMA KAVRAMI


Bu arada ilkyazımda programlama dilleri anlatırken Nesneye dayalı programlama (object oriented programming) dili kavramını vermeyi unutmuşum kısaca ona değinelim ve algoritmalara geçelim…


Programlama gerçek hayattaki durumların modellenmesinden başka bir şey değildir. Bilgisayar programları bu modellerin temel alınarak durumların bilgisayar ortamına aktarılmasından ibarettir.

Türkçenin nasıl kuralları varsa programlama dillerinin de kuralları vardır. Bunları gramer ve imla kuralları olarak ikiye ayırabiliriz. İşte bilgisayar programı yazarken yaptığımız bu kuralları kullanarak çeşitli durumları bilgisayar diline çevirmektir. Tabii her dilinde kendine göre zorluğu veya değişik bir özelliği vardır. Mesela Rusça dilinden bir örnek verecek olursak “okno” (ayna) diye yazılan kelime okunurken “akno” diye okunur. Programlama dillerinde ise mesela C de programlar main ana fonksiyonundan sonra “{“ işareti ile başlamalı “}” işareti arasında yazılmalıdır.

Klasik programlamayla nesneye dayalı programlamanın tek farkı da bu noktadadır. Nesneye dayalı programlama tekniği programcıya yüksek kalitede program yazma imkânı sağlar fakat bunu yapabilmek için tasarım ve kodlama aşamalarında bu ölçütleri göz önünde bulundurmalıyız. Nesneye dayalı programlama ile daha kolay (ucuza: zaman, adam, para) oluşturabilir. Hata bulma, güncelleme yeniden kullanım da daha kolay olur. Klasik programlamadan farklarını şöyle izah edelim:

Sınıf hazırlayabilme ve nesne yönelimli programlamanın bütün özellikleri, fonksiyon ve operatörleri aşırı yükleyebilme, şablon fonksiyon ve sınıflar yazabilme, güçlendirilmiş ve daha güvenli bellek kontrolü, değişkenleri programın herhangi bir yerinde tanımlayabilme (C’de sadece fonksiyon başında tanımlanabilir), referans argümanı kullanabilme (fonksiyonlarda) ve referans değişkeni kullanabilme, Standart Template Library ile her türlü veri yapısı ve veri organizasyonunda iyi bir çözüm ve nesne yönelimli olarak yazılmış yüzlerce hazır kütüphane...

NYP’de sınıf kavramı vardır. Ve bu dilin daha esnek olmasını sağlar. Aynı şekilde nesneye dayalı programlama yöntemleriyle kullanılması verimliliği ve kodun müdahale edilebilirliğini daha da artıracaktır.

"Olay yönlendirmeli Nesne yönelimli" programlama şu anda C# ve VB.NET dillerinin program geliştirme yaklaşımıdır.

0 yorum:

Yorum Gönder