Hangi programlama dillerini öğrenmeliyim ? | En iyi ve yaygın diller

Hangi programlama dillerini öğrenmeliyim | Bilgisayar dünyasının hızla gelişmesi sonucunda programlar hızla artmakta ve gelişmektedir. Bu bağlamda insanların bunu fırsat bilip kariyerlerini bilgisayar yönünde ilerletmek istedikleri rahatlıkla gözlemlenebilir.

Bilgisayar dünyasında iyi gelir elde etmek isteyenlerin bir kısmı yazılım dillerini öğrenip bu dünyada yerlerini almak istemektedir. Sadece ekonomik olarak değil  de merakını gidermek ve kendini bu alanda geliştirmek isteyen insanların sayıları da oldukça fazladır.

Kimine göre zevk kimine göre ise para kaynağıdır. Bu yazıda programlama dilleri hakkında bilgi sahibi olmak isteyen arkadaşlar için bilgi verilmektedir. Kendinize en uygun olanı seçebilmeniz için ise birkaç örnek ile bu programlama dilleri anlatılacaktır.

Hangi programlama dillerini öğrenmeliyim

1 – ActionScript

Flash geliştiricilerinin sunum seviyesi mantığını tasarlamak için kullandıkları nesne yönelimli programlama dilidir. Actionscript ECMAscript üzerine inşa edilmiştir, ECMAscript JavaScript’in esasını oluşturduğu için birçok geliştirici için Actionscript’i anlamak kolaydır. Actionscript Flash içerik yazarlığı esnasında kullanılan özel aksiyonları destekleyen bazı ek ECMAscript özellikleri de içermektedir

Kod Yazımı

ActionScript 2.0

Aşağıdaki kod, 0 derinliğine, [0,0] koordinatlarına, 100 piksel genişliğinde ve yüksekliğinde yazı kutusu oluşturmaktadır. Sonra text parametresine “Merhaba, Dünya” yazısını atayarak gösterimini sağlamaktadır.

createTextField("Merhaba_txt", 0, 0, 0, 100, 100);
Merhaba_txt.text = "Merhaba, Dünya";

ActionScript 2.0 ile sınıf mantığında kod yazılacak olursa, dosya adının, sınıf adıyla (Merhaba.as) aynı olması gerekir.

class com.example.Merhaba extends MovieClip
{
    public function Merhaba() {}
    public function onLoad() :Void
    {
        var Merhaba_txt:TextField = this.createTextField("Merhaba_txt", 0, 0, 0, 100, 100.);
        Merhaba_txt.text = "Merhaba, Dünya";
    }
}

ActionScript 3.0

ActionScript 3.0 ile ActionScript 2.0 yazım şekli benzerdir. Fakat farklı olan objelerin API’leridir. Aşağıdaki kodu önceki ActionScript 2.0 kodlarıyla karşılaştırın:

var Merhaba_txt:TextField = new TextField();
Merhaba_txt.text = "Merhaba Dünya";
this.addChild(Merhaba_txt);

ActionScript 3.0 kod yazımı biraz daha kapsamlı ve geniş olabilir. Fakat anlaşılması kolaydır. Ayrıca önceki ActionScript sürümlerine oranla daha hızlı çalışır.

Merhaba.as adındaki dosya içinde yer alan kodlar:

package com.example
{
	import flash.text.TextField;
	import flash.display.Sprite;

	public class Merhaba extends Sprite
	{
		public function Merhaba()
		{
			var Merhaba_txt:TextField = new TextField();
			Merhaba_txt.text = "Merhaba Dünya";
			addChild(Merhaba_txt);
		}
	}
}

Hangi programlama dillerini öğrenmeliyim ?

2- Active Server Pages ( Türkçe: Etkin Sunucu Sayfaları) kısaca ASP, Microsoft’un ilk dinamik web sayfaları üretmek için geliştirdiği sunucu taraflı betik motoru. Klasik ASP ya da ASP Klasik olarak da bilinir.

Bir ASP dosyasının içinde, özel nesneler ve VBS, JS, SQL kodları bulunur, bu sayfalar istemci tarafından istendiğinde sunucu öncelikle ASP içindeki kodları icra ederek, istemciye göndereceği bilgiyi oluşturur ve gönderir. Gönderilen bilgi genellikle HTML (ya da SGML)şeklindedir. Fakat sadece bunlarla sınırlı değildir, aynı şekilde bir grafik dosyası da oluşturulup, istemciye gönderilebilinir.

ASP sayfaları HTML kodlarının içine <% ve %> ASP taglarıyla gömülü şekilde oluşturulduğu halde bir kez sunucu tarafından yorumlandığında saf HTML olarak döner. Kaynak kodlara bakıldığında ASP kodları görülmez. Bu kodlamacıların kaynaklarını saklamalarını kolaylaştırır.

ASP’nin ortaya çıkış nedenlerinden birisi de CGI dillerinin Oturum (Session) ve Uygulamaların (Application) başından sonuna kadar izlenmesinin yetersiz oluşundandır.

ASP’de Kullanılan Nesneler

ASP altı adet tümleşik nesneyi barındırır.

Response

İstemciye HTTP içeriği ve çerez benzeri bilgileri gönderir.

<%
If Len(Request.QueryString("name")) > 0 Then
     Response.Cookies("name") = Request.QueryString("name") 
End If
 
Response.Write Server.HTMLEncode(Response.Cookies("name")) & " hoşgeldiniz!"
%>

Request

İstemci tarafından gönderilen bilgileri okur.

<%
' Get metodu ile gelen form bilgisini istemciye gönderir
Response.Write Server.HTMLEncode(Request.QueryString("name")) & " hoşgeldiniz!"
%>

Session

Oturum bazlı değişkenleri tutar.

<%
If Len(Request.QueryString("name")) > 0 Then
     Session("name") = Request.QueryString("name") 
End If

Response.Write "Welcome " & Server.HTMLEncode(Session("name")) & "!"
%>

Application

Tüm istemcilerin paylaşabildiği değişkenleri tutar.

<%
Application("uygulama_ismi") = "ASP Uygulamam"
Response.Write Server.HTMLEncode(Application("uygulama_ismi")) & " uygulamasına hoş geldiniz!"
%>

Server

Sunucu üzerinde kurulu veritabanı (ADO), dosya sistemi ve diğer kurulu kütüphanelere erişim sağlar.

<%
Dim oAdoCon, oAdoRec, oAdoStm, oCdoCon, oCdoMsg, oSciDic, oSciFsm, oMswAdr
 
Set oAdoCon = Server.CreateObject("ADODB.Connection")
Set oAdoRec = Server.CreateObject("ADODB.Recordset")
Set oAdoStm = Server.CreateObject("ADODB.Stream")
Set oCdoCon = Server.CreateObject("CDO.Configuration")
Set oCdoMsg = Server.CreateObject("CDO.Message")
Set oSciDic = Server.CreateObject("Scripting.Dictionary")
Set oSciFsm = Server.CreateObject("Scripting.FileSystemObject")
Set oMswAdr = Server.CreateObject("MSWC.AdRotator")
%>

Err

Hata yakalama metotlarını içerir.

<%
On Error Resume Next
 
Response.Write 1 / 0
 
Response.Write "Hata Kodu: " & Server.HTMLEncode(Err.Number) & "<br />"
Response.Write "Hata Kaynağı: " & Server.HTMLEncode(Err.Source) & "<br />"
Response.Write "Hata Açıklaması: " & Server.HTMLEncode(Err.Description) 
 
If Err.Number <> 0 Then 
     Err.Clear 
End If 
%>

3 – AutoIt

Hangi programlama dillerini öğrenmeliyim ?

Autoit 15 Yıldır Geliştirilen, basit Bir Programlama Dilidir.
ilk gelişimi  1999 Yılından Bu Yana olmuştur. Autoit’i Kullanarak Form (Gui) Oluşturabilir, Pencereleri Yönetebilir, Fare Ve Klavyeyi kontrol edebilen Programlar Yazabilir Ve Daha Birçok Şey Yapabilirsiniz. İlk Sürümlerinde Windows’un Otomasyonu Amaçlanmıştı ancak  Autoit Şuanda Gelişerek Windows Üzerinde Her Şeyi Yapabileceğiniz Bir Dil Haline Gelmiştir. Autoit Ile Yazılan Programlar Çalışmak Için Ek Bir Program Ya Da Kütüphane Gerektirmezler.

Merhaba Dünya
MsgBox(0, "Başlık", "Merhaba, Dünya!")
Not Defterine “Merhaba Dünya” Yazdırma
Run("notepad.exe")
WinWait("[CLASS:Notepad]")
Send("Merhaba Dünya!")

[/vc_column_text][vc_column_text]3 – BASIC (İngilizce: Beginner’s All-Purpose Symbolic Instruction Code Türkçe: Yeni başlayanların her işe yarayan simgesel öğretim kodu) 1964’te John George Kemeny ve Thomas Eugene Kurtz tarafından New Hampshire, ABD’de icat edilmiş, günümüzde de çeşitli türevleri kullanılmakta olan yüksek düzey bir programlama dili. Farklı türevleri birçok işletim sisteminin parçası olarak sunulmuştur.

BASIC öğrenmesi ve yazılımları kolay olan bir dildir. Genelde amatörce ve hobi uğraşıları için kullanılmıştır.

Microsoft daha sonra Kişisel bilgisayarlar için Quick Basic derleyicisi piyasaya sürmüştür. Bununla yazılan BASIC metinlerini makine koduna çevirilebilmiş böylece sürat kazanmıştır. Bugün halen geniş bir kullanım alanına sahip olan Visual Basic dili var olup bununla hatta Windows’un belirli bölümleri yazılmıştır. Her Microsoft Office paketinde bir BASIC türevi var olup makro programlamada büyük kolaylıklar getirmektedir.

Basic programlama dili algoritma’ya çok yakın bir yapıya sahiptir. Bu yüzden öğrenilmesi ve uygulanması kolaydır.

Değişken isimleri ve kuralları

Değişken isimleri aşağıdaki kurallara uyan her şey olabilirler:

  1. Değişken ismi en fazla 255 karakterden oluşmalıdır.
  2. Değişkenler arasında : ; , . / ‘ # [ ] ! ” $ % ^ & * ( ) { } karakterleri kullanılamaz. Ancak _ kullanılabilir.
  3. Değişken isminin ilk karakteri mutlaka harf olmalıdır. Yani değişkenler rakamla veya _ ile başlamaz.
  4. Değişken isimlerinde büyük küçük harf ayrımı yoktur. “AbCdE” ile “Abcde” veya “ABCDE” aynı değişkenleri belirlerler.
  5. Belirli bir prosedürde aynı değişken birden fazla tanımlanamaz.
  6. En önemlisi de herhangi bir BASIC komutu olamayacaklarıdır.

Değişkenlerin belirtilmesi

Bir değişken “Dim degisken_ismi as tür” seklinde tanımlanır.

  Dim damdaki_kedi as byte
  Dim Burak, gonen, kedi, damdaki as boolean
  Dim İsmail, cerban, temel, egitim as string

Görüldüğü gibi VB’de de değişkenler arası virgül ile ayrılıp birden çok aynı türde değişken aynı anda tanımlanabilir.

Örnek program

Merhaba Dünya çıktısı

  10 PRINT "Merhaba Dünya!"
  Dim cerban, ismail as string
  cerban=textbox1.text
  ismail=textbox2.text
  if cerban" " or ismail=" " then
  msgbox("Lütfen Parolanızı Giriniz", msgboxstyle.critical)
  EndIf''
  End Sub

Sunucuya Bağlanma

# Bir siteye bağlanmak ve veri akışı

site$ = "tr.wikipedia.org"
port = 80
NETCONNECT site$, port
print "connected to " + site$ + ":" + port

get$ = "GET http://" + site$ + "/ HTTP/1.0" + chr(13) + chr(10)
get$ = get$ + chr(13) + chr(10)
NETWRITE get$
print "request written"

s$ = ""
do
   chunk$ = netread
   print "chunk  '" + left(chunk$,10) + "..." + right(chunk$,10) + "'" + length(chunk$)
   s$ = s$ + chunk$
   # bekleyin / yavaş bağlantılar için bazı ayarlamalar gerekebilir
   pause .2
until not netdata
NETCLOSE

print "response"
print s$
print length(s$)

4 – C++ (Türkçe okunuşu: ce artı artı, İngilizce okunuşu: si plas plas), Bell Laboratuvarlarından Bjarne Stroustrup tarafından 1979 yılından itibaren geliştirilmeye başlanmış, C’yi kapsayan ve çok paradigmalı, yaygın olarak kullanılan, genel amaçlı bir programlama dilidir. İlk olarak C With Classes (Sınıflarla C) olarak adlandırılmış, 1983 yılında ismi C++[1] olarak değiştirilmiştir.

Genel olarak her C programı aynı zamanda bir C++ programıdır, ancak her C++ programı bir C programı değildir. Bu durumun bazı istisnaları mevcuttur. C++’ı C’den ayıran özellikler C++’ın nesne paradigması kullanılarak programlamaya olanak tanıyan özelliklerdir. Sınıflar sayesinde yeni veri türleri yaratılabilir veya varolan türlerden yenileri türetilebilir. Ayrıca çokbiçimlilik sayesinde bir sınıf tanımıyla yazılmış kod, o sınıf türünden türetilmiş yeni sınıflarla da çalışabilir.

C++ dilini öğrenmek ve daha fazla bilgi edinmek için bu maddenin Kaynaklar kısmına bakabilirsiniz.

Yordamsal Altyapı

İşleçler

C++’ın C’den devraldığı ve onu geliştirdiği yapılardan biridir. Kısaca, özel olarak anlamlandırılmış fonksiyonlar kümesidir. Ancak bu fonksiyonlar, alışılageldik şekilde çağırılmaz, dilin semantik yapısı içerisinde özel olarak değerlendirilir. operatörler çoğunlukla iki nesnenin arasına özel bir işaret konulmasıyla çağırılır. Örneğin, iki nesnenin toplanması için iki nesnenin arasına ‘+’ işareti konulması yeterlidir. Bu işaret, derleyiciye ‘+’ operatör fonksiyonunun çağırılacağını ifade eder. C’den farklı olarak, C++’ta operatörlerin çoğunu aşırı yükleme yoluyla özelleştirebilirsiniz.

Önişlemci

C++ Program kaynak kodlarının derlenmesi üç aşamadan oluşur: Önişlemci, kodun dönüştürülmesi ve bağlama. İlk aşama olan önişlemciyi basit bir yorumlayıcı olarak görülebilir. Bu aşamada, bir takım direktifler yardımıyla derlenecek kodlarda basit sözcüksel değişiklikler yapılabilir.

Önişlemci direktifleri # karakteriyle başlar, bu karakterden sonrası önişlemci tarafından yorumlanır ve bu özel karakterden önce beyaz boşluk(tab ve boşluk) dışında bir şey olmaması gerekir. Bu direktifler yardımıyla derlenecek kodlar üzerinde bir takım kurallar belirlenebilir. Ayrıca dosyaya bir başka dosyayı dahil etmek veya işlemciye özel direktifler vermek gibi işlemler içinde kullanılabilir.

Nesne Paradigması

Sınıflar ve Nesneler

Kalıtlama

Kalıtlama diğer veri türlerinin özelliklerinden bir veri türü elde etmeyi sağlar. Temel sınıftan kalıtım, “public”, “protected” ve “private” olarak ilan edilebilir. Bu erişim belirteci ilgili olmayan ve türetilmiş sınıfların kalıtımını “public” ve “protected” üyelerine aktarabilir. Kalıtım ifadesi tek başına kullanılırsa “public” kalıtımı ifade eder. Diğer iki kalıtım türü “public” kalıtımdan daha az kullanılır. Geçiş belirteci ihmal edilirse “class” “private” olarak, “struct” “public” olarak kalıtılır. Temel sınıflar sanal olarak ilan edilebilir, bu sanal kalıtım olarak adlandırılır. Sanal kalıtım çoklu kalıtımın problemlerinden sıyrılarak temel yalnızca bir örneğinin kalıtım grafiğinde olmasını sağlar.[/vc_column_text][vc_column_text]5- C# Programlama Dili (si şarp şeklinde telaffuz edilir), Microsoft’un geliştirmiş olduğu yeni nesil programlama dilidir. Yine Microsoft tarafından geliştirilmiş .NET Teknolojisi için geliştirilmiş dillerden biridir.

Microsoft tarafından geliştirilmiş olsa da ECMA ve ISO standartları altına alınmıştır.

C programlama dilinde bir tamsayı değişkeni 1 atırmak için ++ soneki kullanılır. C++ dili adını, C diliyle Nesneye Yönelimli Programlama yapabilmek için eklentiler (C With Classes) almıştır. Benzer şekilde C++ diline yeni eklentiler yapılarak ((C++)++) bir adım daha ileriye götürülmüş ve tamamen nesneye yönelik tasarlanmış C# dilinin isimlendirilmesinde, + karakterlerinin birbirlerine yakınlaşmış hali ve bir melodi anahtarı olan C# Major kullanılmıştır.

Bu dilin tasarlanmasına Pascal, Delphi derleyicileri ve J++ programlama dilinin tasarımlarıyla bilinen Anders Hejlsberg liderlik etmiştir.

Birçok alanda Java’yı kendisine örnek alır ve C# da java gibi C ve C++ kod sözdizimine benzer bir kod yapısındadır. .NET kütüphanelerini kullanmak amacıyla yazılan programların çalıştığı bilgisayarlarda uyumlu bir kütüphanenin ve yorumlayıcının bulunması gereklidir. Bu, Microsoft’un .Net Framework’u olabileceği gibi ECMA standartlarına uygun herhangi bir kütüphane ve yorumlayıcı da olabilir. Yaygın diğer kütüphanelere örnek olarak Portable.Net ve Mono verilebilir.

Özellikle nesne yönelimli programlama kavramının gelişmesine katkıda bulunan en aktif programlama dillerinden biridir .NET platformunun anadili olduğu bazı kesimler tarafından kabul görse de bazıları bunun doğru olmadığını savunur.

C#, .NET orta seviyeli programlama dillerindendir. Yani hem makine diline hem de insan algısına eşit seviyededir. Buradaki orta ifadesi dilin gücünü değil makine dili ile günlük konuşma diline olan mesafesini göstermektedir. Örneğin; Visual Basic .NET (VB.NET) yüksek seviyeli bir dildir dersek bu, dilin insanların günlük yaşantılarında konuşma biçimine yakın şekilde yazıldığını ifade etmektedir. Dolayısıyla VB.NET, C#.NET’ten daha güçlü bir dildir diyemeyiz. Programın çalışması istenen bilgisayarlarda framework kurulu olması gerekmektedir. (Windows 7 ve Windows Vista’da .NET Framework kuruludur)

Tasarım hedefleri

ECMA tarafından C# dilinin tasarım hedefleri şöyle sıralanır:

  • C# basit, modern, genel-amaçlı, nesneye yönelik programlama dili olarak tasarlanmıştır.
  • Çünkü yazılımın sağlamlılığı, güvenirliliği ve programcıların üretkenliliği önemlidir. C# yazılım dili, güçlü tipleme kontrolü (strong type checking), dizin sınırlar kontrolü (array bounds checking), tanımlanmamış değişkenlerin kullanım tespiti, (source code portability), ve otomatik artık veri toplama gibi özelliklerine sahiptir.
  • Programcı portatifliği özellikle C ve C++ dilleri ile tecrübesi olanlar için çok önemlidir.
  • Enternasyonal hale koymak için verilen destek çok önemlidir.
  • C# programlama dili sunucu ve gömülü sistemler için tasarlanmıştır. Bununla birlikte C# programlama dili en basit işlevselli fonksiyondan işletim sistemini kullanan en teferruatlısına kadar kapsamaktadır.
  • C# uygulamaları hafıza ve işlemci gereksinimleri ile tutumlu olmak uzere tasarlanmıştır. Buna rağmen C# programlama dili performans açısından C veya assembly dili ile rekabet etmek için tasarlanmamıştır.

Merhaba Dünya

// Konsol uygulamaları yazılması için System isim uzayı eklenir. 
// Bu sayede derleyici, System.dll'i kullanması gerektiğini bilir.
using System;

// Sınıf tanımlamasıdır.
class Program
{
    // .NET çalışma zamanında ön tanımlı olarak Main() fonksiyonunu çalıştırır.
    static void Main()
    {
        // Console sınıfı içerisindeki Writeline() fonksiyonu çalıştırılır
        Console.WriteLine("Merhaba Dünya!");
        // Kullanıcıdan herhangi bir tuşa basarak çıkması için bir tuş okunur.
        Console.ReadKey();
    }
}

Basit bir hesap makinesi örneği

using System;

class Program
{
    int sayi1, sayi2, cevap;
    string islem;
    static void Main(string[] args)
    {
        Console.Write("Lütfen ilk tam sayıyı giriniz: ");
        sayi1 = Convert.ToInt32(Console.ReadLine());
        Console.Write("Lütfen yapacağınız işlemi giriniz (+, -, /, *): ");
        islem = Console.ReadLine();
        Console.Write("Lütfen ikinci tam sayıyı giriniz: ");
        sayi2 = Convert.ToInt32(Console.ReadLine());
        switch (islem)
        {
            case "-":
                cevap = sayi1 - sayi2;
                break;
            case "+":
                cevap = sayi1 + sayi2;
                break;
            case "/":
                cevap = sayi1 / sayi2;
                break;
            case "*":
                cevap = sayi1 * sayi2;
                break;
            default:
                cevap = 0;
                break;
        }
        Console.WriteLine(sayi1.ToString() + " " + islem + " " + sayi2.ToString() + " = " + cevap.ToString());
        Console.ReadLine();
    }
}

Eleştiri

C# konusunda eleştiriler tabii ki var. En önemlisi using ile hangi referansları kullanacağımızı çok iyi bilmeliyiz. Ayrıca süslü parantez “{}” ve noktalı virgül “;” karakterlerini çok sevmemiz ve asla unutmamamız gerekmektedir.

Performans

  • Diğerleri gibi Sanal Makine’ye dayalı dillerden biridir, C# programlama dili direkt yerleşik kod’a derleyen dillerden daha yavaştır.

Platform

  • .NET Microsoft uygulama bonservisi Windows üzerinde geçerlidir. Fakat C# programlarını Windows, Linux veya MacOs üzerinde yürüten başka uygulamalar da yer almaktadır. Mono (software) ve DotGnu

Güvenlik

  • C# sanal makineye dayalı bir dil olduğundan kaynak kodlarının korunması zordur. Kaynak kodları karıştırıp şifreleyen ek uygulamalar ile güvenlik düzeyi artırırsada tam olarak koruma sağlanmaz.

6 – dBase, PC’ler için veritabanı ihtiyacını giderme amaçlı Ashton Tate firması tarafından piyasaya sunulan bütünleşik bir veritabanı yöneticisi içeren 4. nesil programlama dili ve yazılımıdır.

Tarihçe

Orijinal dBase’i geliştiren Wayne Ratliff’tir. 1978’de, Jet Propulsion Laboratory’de çalışırken, Ratliff assembly programlama dili ile CP/M bir bilgisayarda kullanmak için bir veritabanı oluşturdu. Buradaki amacı futbol takımlarının maç sonuçlarını izlemekti. Daha sonra işyerinde iş amaçlı bir uygulama geliştirerek buna “Vulcan” demiştir.

1980 başlarında, Ashton-Tate’in patronu George Tate, Ratliff ile bir ticari sözleşme imzaladı. Vulcan’ın adı ise “dBase” olarak değiştirildi ve yazılım çok kısa sürede büyük başarı elde etti.

Özellikler

Yazılımda büyük-küçük harf ayrımı yoktur ve komutlar/fonksiyonların ilk dört harfini yazmak yeterlidir. Değişkenler on harfi geçemez ancak istenirse daha uzun da yazılabilir, derleyici sadece ilk on harfi dikkate alır. dBase strong type bir dil değildir. Bir değişken istenilen satırda tanımlanabilir ve tipi istenildiği zaman değiştirilebilir.

dBase sayesinde daha önceleri sadece büyük bilgisayar sistemlerinde başarılabilen veri uygulamaları, küçük bilgisayarlara da sıçramıştır. dBase III+ versiyonu zamanının efsanesi olmuş, yazılımcıların veri tabanı mantığının gelişmesinde ve kullanımının yaygınlaşmasına büyük katkısı olmuştur.

7 – Object Pascal Turbo Pascal’dan sonra Borland firmasının çıkardığı bir programlama dilidir. Delphi programlama dilinin ilk adımı olarak nitelendirilebilir.

Zamanla Delphi ile Object Pascal kavramları birbirine karışsa da Delphi, Object Pascal programlama dilini kullanan ve programcılara VCL teknolojisi yardımıyla program yazmalarını sağlayan IDE nin adıdır.

Artık programcılar bu programla, adından da belli olduğu gibi, nesne yönelimli programlamaya başlamışlardır. Kullanımı Turbo Pascal’dan daha kolaydır.

8 – Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen (yorumlanan-interpreted) bir dildir.

Java, Sun Microsystems’den James Gosling tarafından geliştirilen bir programlama dilidir (Sun Microsystem’in şu anda Oracle Corporation ile bağlı ortaklığı bulunmaktadır) ve 1995 yılında Sun Microsystems’in çekirdek bileşeni olarak piyasaya sürülmüştür. Bu dil C ve C++’dan birçok sözdizim türetmesine rağmen bu türevler daha basit nesne modeli ve daha az düşük seviye olanaklar içerir. Java uygulamaları bilgisayar mimarisine bağlı olmadan herhangi bir Java Virtual Machine (JVM)’de çalışabilen tipik bytecode’dur (sınıf dosyası).

Java ilk çıktığında daha çok küçük cihazlarda kullanılmak için tasarlanmış ortak bir düzlem dili olarak düşünülmüştü. Ancak düzlem bağımsızlığı özelliği ve tekbiçim kütüphane desteği C ve C++’tan çok daha üstün ve güvenli bir yazılım geliştirme ve işletme ortamı sunduğundan, hemen her yerde kullanılmaya başlanmıştır. Şu anda özellikle kurumsal alanda ve mobil cihazlarda son derece popüler olan Java özellikle J2SE 1.4 ve 5 sürümü ile masaüstü uygulamalarda da yaygınlaşmaya başlamıştır.

Java’nin ilk sürümü olan Java 1.0 (1995) Java Platform 1 olarak adlandırıldı ve tasarlama amacına uygun olarak küçük boyutlu ve kısıtlı özelliklere sahipti. Daha sonra düzlemin gücü gözlendi ve tasarımında büyük değişiklikler ve eklemeler yapıldı. Bu büyük değişikliklerden dolayı geliştirilen yeni düzleme Java Platform 2 adı verildi ama sürüm numarası 2 yapılmadı, 1.2 olarak devam etti. 2004 sonbaharında çıkan Java 5, geçmiş 1.2, 1.3 ve 1.4 sürümlerinin ardından en çok gelişme ve değişikliği barındıran sürüm oldu. Java SE 7 ise (kod adı Dolphin) Sun’un üzerinde çalıştığı, Java teknolojisinin günümüz sürümüdür. 13 Kasım 2006’da Java düzlemi GPL ruhsatıyla açık kodlu hale gelmiştir.

Java programları nasıl çalıştırılır?

Bir Java yazılımı şu şekilde geliştirilir;

  • Yazılımcı Java kodunu yazar.
  • Bu kod bir Java derleyicisi ile derlenir. Sonuçta “bytecode” adı verilen bir tür sanal makine kodu ortaya çıkar. Düzlem bağımsızlığını sağlayan bytecode’dur. Çünkü bir kere bytecode oluştuktan sonra yazılım sanal makine içeren tüm işletim sistemlerinde çalışabilmektedir.
  • Bu bytecode Java Sanal Makinesi (İng., Java Virtual Machine) tarafından işletilir. Bu aşama, her bir bytecode komutunun teker teker yorumlanması ile icra edilebileceği gibi, anında derleme kullanılarak da gerçekleştirilebilir.

Java ile İlgili Bazı Kavramlar

Nesneye yönelik yazılımlama mantığı;

Anında Derleme

Java ilk çıktığında bytecode işletme hızı çok iyi değildi. Yerine göre sistemin öz yazılımlarından 5-10 kat yavaş çalışıyordu. Bu nedenle bazı yazılım geliştirme şirketleri JIT yani “Just-in-time compile”, “anında derleme” araçları üretmeye başladılar. Yapılan şey bytecode’u sanal makinenin kurulu olduğu gerçek sistemin diline anında derleme yaparak dönüştürmesiydi. Bu sayede verimde ciddi artışlar sağlandı. Ama 2000 yılından sonra geliştirilen sanal makinelerde (HotSpot gibi) JIT’in işlevi VM içinde yer almaya başlamış, işlemci hızı ve bellek miktarının dramatik biçimde artması ile dış JIT yazılımları popülerliğini kaybetmiştir. Bugün halen birkaç ürün (Excelsior JET gibi) pazarda bulunsa da genellikle bu yöndeki ihtiyaç azalmıştır.

Java API

Java API, Java yazılımlarında kullanılan yazılım kütüphanelerine genel olarak verilen isimdir. Java API ile disk, grafik, ağ, veri tabanı, güvenlik gibi yüzlerce konuda kullanıcılara erişim imkânı sunulur. Java API J2SDK’nın bir parçasıdır.

Atık Veri Toplayıcı

Atık veri toplama teknolojisi Java’dan önce de var olan ama Java ile adını duyurmuş ve yaygın olarak kullanılmaya başlanmış bir kavramdır. C++, C gibi dillerin en büyük engellerinden birisi dinamik bellek yönetimidir. Yazılımda gösterici (işaretçi; İng., pointer) kullanarak dinamik olarak bellek ayırdıktan sonra o bellek ile işiniz bittiğinde mutlaka ayrılan belleği bellek yöneticiye özel altyordamlar yardımıyla (delete, free vs.) iade etmeniz gerekir. Yoksa bellek sızıntısı (İng., memory Leak) oluşur ve bu bir süre sonra yazılımın ve işletim sisteminin beklenenden farklı davranmasına yol açabilir. Sızıntıların saptanması oldukça güçtür ve bulunması zor hatalara yol açar. Bu nedenle bugünün tüm büyük C ve C++ yazılımları az da olsa bellek sızıntısı içerir (işletim sistemleri dahil).

Atık veri toplayıcı sayesinde Java’da bir nesne oluşturulduktan sonra o nesne ile işiniz bittiğinde hiçbir şey yapmanız gerekmez: Sanal makine akıllı bir biçimde kullanılmayan bellek bölümlerini belirli aralıklarla ya da uyarlamalı yöntemlerle otomatik olarak temizler ve sisteme iade eder. Bu işleme çöp toplama (İng., garbage collection) adı verilir. Çöp toplama sistemlerinin yapısı oldukça karmaşıktır ve geçen yıllar içinde büyük gelişmeler kaydedilmiştir. Çöp toplayıcının varlığı Java’da bellek sızıntısı olmayacağı anlamına gelmez, ama bellek sızıntıları daha ender olarak ve farklı şekillerde karşınıza çıkar ve genellikle tedavi edilmesi daha kolaydır.

Jar

Jar (İng. Java Archive), aslında bir tür sıkıştırma formatıdır. Jar ile derlenen Java kodları ile oluşan yazılımın paketlenip taşınması kolay bir hale getirilir. Jar dosyaları temelde bytecode blokları içerir. Jar dosyaları genellikle kütüphane oluşturmada ya da uygun biçimde hazırlanırsa işletim sisteminden doğrudan çalıştırılabiliecek bir şekilde kullanılabilir (Executable jar, işletilebilir jar) jar dosyalarının içeriğini sıkışıtırma yazılımları ya da java yazılım geliştirme araçları ile inceleyebilirsiniz. Java 1.5 ile yeni bir tür jar oluşturma metodu da kullanıma girdi. Pack200 adı verilen hiper-compression algoritması ile jar dosyaları daha küçük boyutlara indirilebiliyor. Ancak bu teknoloji daha çok ağ üzerinden yapılan transferlerde kullanılıyor.

AWT ve Swing

AWT, ilk Java ile birlikte geliştirilen temel grafik arayüz oluşturma kütüphanesine verilen isimdir. AWT işletim sisteminin doğal grafik yapılarına erişimi sağlar. Ancak Java 2 platformu ile birlikte AWT yetersiz görülmüş ve çok daha geniş ve gelişmiş özelliklere sahip Swing kütüphanesi sisteme eklenmiştir. Özellikle çok platform destekleyen yazılımlarda kullanıcı arayüzü geliştirme aracı olarak swing halen önemini korumaktadır. Swing önceleri işletim sisteminin kullandığı donanım grafik hızlandırma araçlarını kullanmadığından yavaşlığı ile eleştirilere hedef olmuştu. Özellikle Java 1.4 ile Swing, hem genel olarak sanal makinenin hızlanması ve kısmen donanım hızlandırmayı kullanması ile bu kötü şöhretinden sıyrılmaya başladı. Java 5 ve 6 ile donanım özellikle OpenGL-DirectX kullanımı ve yeni arayüz gösterim şekli ile Java’nın masaüstü uygulama geliştirmede popülerleşmesi bekleniyor. AWT halen Swing’in bir alt katmanında, temel iki boyutlu grafik işlemlerinde kullanılmaya devam ediyor.

SWT

SWT Swing’e bir alternatif olarak IBM tarafından geliştirilen bir gösterim sistemidir. Swing’den en büyük farkı çalıştığı işletim sisteminin grafik kütüphanesi ve komutlarını kullanmasıdır. Bu nedenle SWT uygulamaları Swing’e göre çoğu yerde daha hızlı ve işletim sistemindeki diğer uygulamaları andıran bir şekilde çalışmasını sağlar. Swing’in Java 1.5 ile performans açığını kapattığı iddia edilse de SWT’nin de artık Java camiasında kabul görmüş bir sistem olduğu açıktır. SWT’nin dezavantajı ise Java’nin bir parçası olmamasıdır. Yani SWT uygulamaları SWT kütüphanesi ile birlikte dağıtılmaktadır. Ayrıca SWT farklı işletim sistemlerinde farklı olgunluk ve performansta işlemektedir ve özellikle Windows dışı sistemlerde henüz yeterince olgunlaşamamıştır. En bilinen SWT uygulamaları ünlü Java yazılım geliştirme aracı Eclipse ve BitTorrent uygulaması Azureus’tur.

HotSpot Teknolojisi

Sun tarafından geliştirilen Java sanal makinesi HotSpot adı verilen özel bir teknolojiyi içinde barındırır. HotSpot, yani “sıcak nokta”, bir yazılımda sürekli olarak tekrarlanan ve üzerinden geçilen kod bölümlerine verilen bir isimdir. HotSpot sanal makinesi şu anda iki ayrı modda sanal makinenin çalışmasını sağlamaktadır: İstemci (Client) ve Sunucu (Server) modları. İstemci modunda bytecode büyük ölçüde daha başlangıçta JIT ile sistemin öz makine koduna dönüştürülerek işletilir ama çalışma anında daha fazla iyileştirme işlemi gerçekleştirilmez. Bir uygulamanın hızı istemci modunda zaman içinde bu nedenle değişmez. Sunucu modunda ise sanal makine başlangıçta bytecode’unu sistemin öz koduna dönüştürmekte acele etmez. Bu nedenle sunucu modu başlangıçta istemci modundan oldukça yavaştır. Yazılım çalışmaya devam ettikçe sanal makine yazılımdaki sıcak noktaları tespit edip bytecode’u sadece JIT ile makine koduna dönüştürmekle kalmaz, ayrıca oldukça yoğun bir iyileştirmeye de tabi tutar. Sonuçta sunucu modunda uygulamalar zaman içinde hızlanır, uzun soluklu uygulamaların bu nedenle sunucu modunda işletilmesi önerilir. Mustang kod adlı Java SE 6’da istemci modunda da benzeri bir teknolojinin kullanılması bekleniyor. Dolphin kod adlı Java SE 7’de ise bu iki mod arasındaki fark azalacağından sistemin tek modda çalışması bekleniyor.

Uygulamacık

Uygulamacık (İng., applet), uzaktaki sistem üzerinden indirilip internet tarayıcı üzerinde çalıştırılabilen Java uygulamalarına verilen isimdir. Java’nın son kullanıcılar tarafından tanınması uygulamacık sayesinde olmuştur dersek yanlış olmaz. Uygulamacıklar sisteme zarar veremeyecek bir şekilde tasarlanmıştır ve bugün özellikle oyun sitelerinde halen yaygın olarak kullanılmaktadır. İçerisinde uygulamacık olan bir sayfayı açmaya çalıştığınızda tarayıcınız otomatik olarak Java sanal makinesini çalıştırıp ekranın uygulamacığa ayrılan bölümünde uygulamanın çalışmasını sağlar.

WebStart

WebStart teknolojisi uygulama kurulum, güncelleme ve silme dertlerine deva olmak üzere tasarlanmış bir sistemdir. Özellikle Java 1.5 ile daha yaygın kullanılmaya başlayacağı tahmin edilen WebStart teknolojisi kısaca yazılımların uzaktan yerel sisteme güvenli olarak kurulmasını ve korumalı bir alanda çalıştırılmasını sağlar. Applet’lerin bir sonraki adımı olarak görülebilir. Bir WebStart uygulamasını kurmak için internet üzerindeki özel bir bağlantıya tıklamak yeterlidir. Sistem otomatik olarak WebStart sistemini çalıştırıp yazılımı Java cep belleğine indirir. İstenirse masaüstüne kısayol koymasını da sağlar. Daha sonra sistem çevrimiçi (online) ya da çevrimdışı (offline) olarak çalıştırılabilir ve uzaktaki yazılım güncellendiğinde otomatik olarak -istenirse- yerel makinedeki yazılımın da güncelenmesi sağlanabilir. Kullanıcının özel olarak izin vermesi halinde uygulama yerel sisteme erişim hakkı kazanabilir. Aksi takdirde WebStart uygulamaları sisteme yazma işlemi gerçekleştiremezler (yani virüs ve zararlı yazılım tehlikesini son derece aza indirger.)

Java Yazımı (Sözdizimi)

Sınıf temelli nesneye yönelik bir dil olan Java, yazım olarak C++ ile benzerlikler arz eder. Java’nın yanında C#, Perl, JavaScript gibi diller de aynı dil ailesine aittir. “{}” şeklinde süslü parantezler içerisindeki bloklar, ++ arttırma ve—azaltma işleçleri bu dilin belirgin özelliklerindendir.

Merhaba Dünya!

 // MerhabaDünya.java
 public class MerhabaDünya{
     public static void main(String[] args) {
         System.out.println("Merhaba Dünya!");
     }
 }
  • “MerhabaDünya.java” ile “public class MerhabaDünya” bu kısımda iki isim aynı olmalıdır aksi takdirde uygulama çalıştırılamaz.
  • class: Sınıf tanımlayabilmek için class ön eki şarttır.
  • public: Sınıfın dışarıdan erişebilir olduğu,
  • static: Sınıf tarafından paylaşıldığı,
  • void: Bir değer döndürmediği anlamına gelir.
  • Public ve Static’e erişim belirleyicisi (access specifier) de denir.
  • Void’e dönüş tipi (return type) de denir.
  • String args[]: Parantezin içinde yöntemin aldığı parametreleri belirleriz. “String” sınıf adı, “args” da parametre adıdır. “[]” ise args’ın bir dizi (array) olduğunu belirtiyor.
  • “System.out.println();” ile yazımızı yazdırıyoruz ve yeni satıra geçmesini sağlıyoruz.
  • Yazımızı “System.out.print(“Merhaba Dunya!”);” ile de yazdırabilirdik. Fakat imleç yeni satıra geçmezdi.
  • Java Türkçe karakterleri (C# gibi) “değişken adlarında, sınıf adlarında” da kullanmamıza imkân tanır.

Java’da yazdığımız yazılımları derlememiz için öncelikle sınıf adı ile aynı adı taşıyan dosya ismine sahip olmamız gerekmektedir. Yukarıdaki örnek yazılımı sınıf ismi olan “MerhabaDünya” ifadesini kullanıp uzantısı ile beraber “MerhabaDünya.java” ismi ile kaydedebiliriz. J2SDK veya benzer bir Java geliştirme ortamı kurulu sistemimizde yazılan uygulama aşağıdaki şekilde derlenebilir.

javac -encoding UTF-8 MerhabaDünya.java

javac, yazılan programı derleyerek “.class” uzantılı bir dosya üretir. “.class” sınıf dosyaları JVM’de çalışabilecek bytecode’lar içeren sınıf dosyalarıdır. Örnek uygulamayı çalıştırmak için:

java MerhabaDünya

yazabiliriz. Java komutu öncelikle sınıf yolunda (Bkz. Classpath) “MerhabaDünya” sınıfını arayacaktır. Bulduğu takdirde “MerhabaDünya” sınıfında “main” metodunu arayacaktır. Eğer metod bulunur ise bu metod icra edilecektir.

Kapsamlı örnek

package TekCift;

import javax.swing.JOptionPane;

public class TekCift {

	/**
	 * Tam sayı (int ingilizce de integer’ın kısaltmasıdır)
	 */
	private int kullanicininGirdigi;

	/**
	 * Bu yapıcı fonksiyondur. TekCift objesi yaratılırken çağırılır.
	 */
	public TekCift() {
	}

	/**
	 * Aşağıdaki ana fonksiyondur. Java yorumlayıcısı programı çalıştırmak için
	 * ilk bu fonksiyonu çağırır.
	 * 
	 * @param argumanlar
	 *            Komut satırı argümanları (kullanılmıyor)
	 */
	public static void main(final String[] argumanlar) {
		TekCift obje = new TekCift();
		obje.pencereGoster();
	}

	/**
	 * Aşağıdaki fonksiyon "Sayı giriniz" diyaloğunu gösterir
	 */
	public void pencereGoster() {
		try {
			kullanicininGirdigi = Integer.parseInt(JOptionPane.showInputDialog("Lütfen bir sayı giriniz."));
			hesapla();
		} catch (final NumberFormatException e) {
			System.err.println("HATA: Geçersiz bir değer girdiniz. Lütfen sayısal bir değer giriniz.");
		}
	}

	/**
	 * Aşağıdaki fonksiyon kullanıcının girdiği değere göre çift ya da tek
	 * penceresi gösterir.
	 */
	private void hesapla() {
		if ((kullanicininGirdigi % 2) == 0) {
			JOptionPane.showMessageDialog(null, "Çift");
		} else {
			JOptionPane.showMessageDialog(null, "Tek");
		}
	}
}
  • package anahtar kelimesi dosyanın başında paket belirtmek için kullanılır.
  • kullanıcı arayüzü gösterebilmek içın javax.swing.JOptionPane kütüphanesine ihtiyacımız var. Dosyanın başındaki import cümlesi tam bu işe yarar.
  • TekCift sınıfı kullanıcının girdiği bir tamsayıyı hafızasında tutmak için kullanicininGirdigi değişkenini tanımlıyor. Diğer sınıfların bu değişkeni görmemesi için private (özel) anahtar kelimesini kullanılıyoruz.

9 – JavaScript, yaygın olarak web tarayıcılarında kullanılmakta olan dinamik bir programlama dilidir. JavaScript ile yazılan istemci tarafı betikler sayesinde tarayıcının kullanıcıyla etkileşimde bulunması, tarayıcının kontrol edilmesi, asenkron bir şekilde sunucu ile iletişime geçilmesi ve web sayfası içeriğinin değiştirilmesi gibi işlevler sağlanır. JavaScript, Node.js gibi platformlar sayesinde sunucu tarafında da yaygın olarak kullanılmaktadır.

JavaScript prototip-tabanlı, dinamik türlere ve birinci-sınıf fonksiyonlara sahip bir betik dilidir. Nesne yönelimli, imperatif ve fonksiyonelprogramlama prensiplerine sahiptir.

JavaScript ve Java arasında; isimleri, yazım şekli ve standart kütüphanelerindeki benzerlikler dışında bir bağlantı yoktur ve iki dilin semantikleri çok farklıdır. JavaScript’in yazım şekli C programlama dilinden türetilmiş, semantiği ve tasarımı ise Self ve Schemeprogramlama dillerinden esinlenmiştir.

JavaScript, ECMAScript belirtimleri ile standartlaştırılmıştır.

Tarihçesi

İlk olarak Brendan Eich tarafından geliştirilmiş olup, ilk defa Aralık 1995 tarihinde Netscape Navigator 2.0 ile birlikte piyasaya sürüldü. Geliştirme aşamasında adı Mocha olarak geçmesine rağmen Eylül 1995 tarihine kadar resmi olarak LiveScript olarak isimlendiriliyordu. Netscape 2.0 Beta3 ile birlikte ismi JavaScript olarak değiştirildi.

JavaScript’in isim değişikliği ile Netscape’in Java teknolojilerine (Java Applet) destek vermesi yaklaşık olarak aynı tarihlere denk gelir. Microsoft ile Netscape’in web teknolojileri ve platformları alanında yarıştığı bir dönemde, Netscape Sun Microsystems’ın geliştirdiği Java platformuna destek vererek dağıtık bir işletim sistemi yaratmayı öngörüyordu. JavaScript ise, Visual Basic’in yaptığı gibi, profesyonel olmayan programcıları hedefleyen daha basit bir betik dili olarak düşünülmekteydi.

Microsoft’un uygulaması

Microsoft, 1996 yılında JScript ve VBScript betik dillerini yayınladı. JScript Netscape’in JavaScript’ine benzerken VBScript Visual Basic temelliydi ve var olan Visual Basic programcılarının kolay bir geçiş yapmasını hedefliyordu. Aynı dönemde Microsoft ilk defa CSS desteği de sağladı ancak hem CSS hem de JScript desteği Netscape’in o zamana kadar sağladıkları ile tutarlı çalışmıyordu. Bu durum web tasarımcıları ve geliştiricileri arasında bir kargaşa yaratmış ve tarayıcı savaşlarının ilk yıllarında sitelerin altında tipik olarak görülen “En iyi Internet Explorer ile izlenir” ya da “En iyi Netscape ile izlenir” gibi logoların ortaya çıkmasına neden olmuştur.

Standartlaşma

1996 yılının kasım ayında Netscape firması JavaScript’in endüstri standardı olarak belirlenmesi amacıyla Ecma International firmasına başvuruda bulunduğunu ilan etti. Bunun sonucunda standardize edilen sürüm ECMAScript olarak isimlendirildi ve 1997 yılının haziran ayında Ecma International, ECMA-262 belirtiminin ilk sürümünü yayımladı. Haziran 1998’de ISO/IEC-16262 standardına uyumlu hale getirilecek değişiklikler yapılarak ikinci sürüm, Aralık 1999’da ise üçüncü sürüm yayımlandı.

ECMAScript’in dördüncü sürümü üzerinde ciddi bir çalışma yapılmasına rağmen asla tamamlanamadı, ancak beşinci sürüm için önemli bir ilham kaynağı oldu[4]. Beşinci sürüm 2009 yılının aralık ayında yayımlandı. ECMAScript’in şu an geçerli olan son standart belirtimi, Haziran 2011 tarihinde yayımlanan 5.1 sürümüdür ve Javascript 1.8.5 tarafından desteklenmektedir.

NodeJS

Ana madde: Node.js

Node.js hızlı, ölçeklenebilir ağ uygulamaları oluşturmak için Chrome’un JavaScript Runtime teknolojisi üzerine kurulu bir platformdur. Node.js, dağıtık sistem olarak çalışabilen gerçek zamanlı uygulamalar için hafif ve verimli hale getiren olay odaklı, bloke etmeyen G/Ç (non-blocking I/O) modeli kullanır.

Değişkenler

JavaScript’te değişkenler var anahtar kelimesi ile tanımlanır.

/* aşağıdaki cümle x değişkeninin varlığını ilan eder
* ve undefined özel değerini x değişkenine atar. */
var x;

/* aşağıdaki cümle y değişkeninin varlığını ilan eder
*  ve 2 değerini y değişkenine atar. */
var y = 2;

Fonksiyonlar

Fonksiyon tanımlamak için aşağıdaki gibi function anahtar kelimesini kullanabiliriz.

function faktoriyel(sayi) {
    if (sayi == 0) {
        return 1;
    }
    return sayi * faktoriyel(sayi - 1);
}

Yukarıdaki özyinemeli fonksiyon, girilen değerin faktoriyelini hesaplamada kullanılabilir. Eğer JavaScript yorumlayıcınız console objesini sunuyorsa, bu örneği aşağıdaki gibi deneyebilirsiniz.

/* Aşağıdaki kod 6 yazdırmalıdır.
 * faktoriyel(0) = 1
 * faktoriyel(1) = faktoriyel(0) * 1 = 1
 * faktoriyel(2) = faktoriyel(1) * 2 = 2
 * faktoriyel(3) = faktoriyel(2) * 3 = 6
 */
console.log(faktoriyel(3));

10 – Oracle, Microsoft’un ardından dünyanın en büyük ikinci yazılım şirketidir. 120.000’i aşkın çalışanı,380.000’den fazla müşterisi ile 145 ülkede faaliyet göstermektedir.

Veritabanı, uygulama geliştirme araçları, uygulama sunucusu ve de iş uygulamaları alanlarında yazılım çözümleri bulunmaktadır.

11 – Pascal (Paskal okunur) bilgisayar programlama dili pek çok öğrenciye bilgisayar programlamayı öğreten ve çeşitli versiyonları bugün hala yaygın olarak kullanılmaya devam eden en önemli programlama dillerinden biridir. İlk Macintosh işletim sisteminin çoğu ve TeXPascal ile yazılmıştır.

Bilgisayar bilimcisi Niklaus Wirth Pascal’ı 1970’te yapısal programlamayı derleyiciler için daha kolay işlenir hale getirebilmek amacıyla geliştirmiştir. Adını matematikçi ve düşünür Blaise Pascal’dan alan Pascal, Algol programlama dilinden türemiştir. Wirth, Pascal’dan başka Modula-2 ve Oberon programlama dillerini de geliştirmiştir. Bu diller Pascal’a benzerler ve ayrıca nesneye yönelik programlamayı da desteklerler.

Temel sözdizimi

Bir dilin sözdizimine örnek olarak yaygın biçimde bir “Merhaba dünya” programı gösterilir. Aşağıda Pascal ile yazılmış bir “Merhaba dünya” programı görebilirsiniz:

program MerhabaDunya(output);
uses crt;
begin
  Write('Merhaba Dünya!');
end.

Pascal’da tüm programlar “Program” anahtar sözcüğü ile başlar, ve ardından “Begin” / “End” anahtar sözcükleri ile sınırlanan bir blok gelir. Pascal dilinde harflerin büyüklüğü-küçüklüğü önemli değildir. İfadeler noktalı virgül ile ayrılır, ve programlar bir nokta ile bitirilir. Bazı derleyiciler için “Program” satırı zorunlu değildir.

Orijinal halinde Pascal, tümüyle prosedürel bir dildir ve programlar if, while, for ve benzeri yapılardan oluşur.

Hangi programlama dillerini öğrenmeliyim ?

Pascal ve C

Pascal ve C dilleri yaklaşık aynı zamanlarda geliştirilmişlerdir ve aralarında önemli benzerlikler vardır. Orijinal Pascal ile C’nin ikisi de yapısal programlama fikrini gerçekleştiren küçük ve prosedürel dillerdir. İkisinde de dinamik bellek ayırma ve işaretçi işleme (İng. pointer manipulation) mümkündür. Ancak, bu iki dil dışarıdan bakıldığında farklı görünürler (C programları genelde Pascal programlarından kısadır).

Tartışma yaratan farklılıklardan bir tanesi, Pascal’ın atama için := ve karşılaştırma için = imlerini kullanmasıdır. Matematikte = imi her iki amaç için de kullanıldığından, programcılar bazen yanlışlıkla Pascal’da :=, C’de ise == kastedildiği halde daha kısa olan = imini kullanırlar. C’nin tasarımcıları atama işleminin karşılaştırma işleminden daha sık kullanıldığını, dolayısıyla kısa olan imin atama işlemi için kullanılması gerektiğini savunurlar. Pascal’ın savunucuları ise, yanlışlıkla atama yapmanın yanlışlıkla karşılaştırma yapmaktan çok daha tehlikeli olduğunu savunurlar. Bu savunma, eğer, C’de olduğu gibi, bir if ifadesi içinde atama yapılabiliyorsa, kesinlikle doğrudur.

Bu tartışma, iki dilin tasarım mantıkları arasındaki farka işaret eder. Pascal, en azından kısmi olarak, bir eğitim dili olarak tasarlanmıştır. Yanlışlıklara yol açabilecek sözdizimi yapılarından kaçınılmış, sözdiziminin anlaşılması kolay olmasına dikkat edilmiştir. C’nin tasarımcıları ise dili programların kısa olması için tasarlamışlardır.

Bu iki dil arasındanki başka bir fark da, Pascal’ın “strongly typed” olmasıdır. Yani, bir değişken kullanılmadan önce belirli bir tipe sahip olmak üzere tanımlanmalıdır, ve faklı tiplerden iki değişken birbirlerine atanamazlar. Bu sınırlama pek çok programlama yanlışını önler.

C’nin tersine, Pascal’da içiçe fonksiyon tanımlamak mümkündür.

Orijinal Pascal’da program parçaları ayrı ayrı derlenemezler, ve derleme anında boyutu bilinmeyen diziler kullanmak mümkün değildir. Ancak bu sınırlamalar, Pascal’ın bazı versiyonlarında kaldırılmıştır. pascal biraz zor ama çözüldüğü zaman zevkli bir hale gelir.. Turbo pascal vb gibi programlar özellikle ‘C’ olup oyunlarda önde gelen programlardır.

Pascal derleyicileri

İlk Pascal derleyicileri (örneğin kendisi de Pascal ile yazılmış olan UCSD p-System derleyicisi) Pascal programlarını makinadan bağımsız p-Code’a çevirmek üzere tasarlanmışlardı. Bu kod, sonradan her sistem için ayrı bir program tarafından yorumlanıyordu. Sonuç olarak, yalnızca küçük yorumlayıcı kısım diğer mimarilere taşınmak (port edilmek) zorundaydı.

1980’lerde Anders Hejlsberg Nascom-2 için Blue Label Pascal derleyicisini yazdı. Daha sonra Borland’da çalışmaya başlayan Hejlsberg, burada derleyicisini IBM PC için baştan yazıp, adını Turbo Pascal koydu. Borland, Turbo Pascal’ı Hejlsberg’in Blue Label’ı sattığı fiyattan çok daha ucuza, 49 dolara sattı.

Ucuza elde edilebilen Borland derleyicisinin 1980’lerin sonunda IBM PC üzerinde yoğunlaşmaya başlayan Pascal topluluğunda büyük etkisi oldu. BASIC yerine yapısal bir programlama dili arayan pek çok PC amatörü Turbo Pascal’ı kullanmaya başladı. Yalnızca bir mimaride çalışan Turbo Pascal, programları doğrudan Intel 8088 makina dilineçeviriyordu, dolayısıyla yorumlama kullanan yaklaşımdan daha hızlı idi.

Super Pascal, dile nümerik olmayan etiketler ve bir return ifadesi ekledi.

1990’larda değişik mimariler için işletilebilir kod üretebilen derleyiciler kullanılmaya başlandığında Pascal programları pek çok makina diline kolayca derlenebilir hale geldiler.

Borland, Turbo Pascal’a 5.5 versiyonunda nesneye yönelim ekledi.

Borland daha sonra daha geniş bir nesneye yönelim desteği istediğine karar verip, Apple’ın önerdiği (hala bir standart olmayan) Object Pascal taslağını kullanarak Delphi’yi geliştirmeye başladı. Borland da başta bu dili Delphi’de Object Pascal olarak adlandırdıysa da, sonradan dilin adını da Delphi olarak değiştirdi. Pascal’ın bu ‘lehçesini’ destekleyen başka derleyiciler de vardır.

Hangi programlama dillerini öğrenmeliyim ?

Herkesin kullanımına açık derleyiciler

Herkesin kullanımına açık bazı Pascal derleyicileri aşağıda sıralanmıştır:

  • P4 derleyicisi: Pascal kullanılarak yazılan (UCSD p-System dahil olmak üzere) pek çok Pascal derleyicisinin temeli olan derleyici.
  • FreePascal da Pascal kullanılarak yazılmıştır (ve kendi kendini derleyebilir). FreePascal, kullanışlı ve güçlü bir derleyici olarak tasarlanmıştır ve eski uygulamaları derlemek için kullanılabileceği gibi, yeni uygulamalar yazmak için de geliştirilmiştir.
  • Lazarus

Geçmişteki eleştiriler

1980’lerde ve 1990’ların başındaki kadar olmasa da hala popüler olan Pascal, yine de “ciddi” programlama için uygun olmadığı ve yalnızca eğitim için kullanılabileceği savıyla eleştirilmiştir. C‘nin yaratıcılarından olan Brian Kernighan, 1981’de yazdığı makalesi Why Pascal Is Not My Favorite Programming Language (Pascal Niçin Benim En Sevdiğim Dil Değildir) ile bu eleştirileri özetlemiştir. Öte yandan, 1980’lerde Apple Lisa ve Macintosh gibi büyük projeler Pascal’a dayanıyorlardı. Aradan geçen zaman içinde, Pascal gelişmeyi sürdürmüş ve bu sayede Kernighan’ın eleştirileri artık modern Pascal versiyonları için geçerli olmaktan çıkmıştır. Yeterli bilgiye sahip olmayan pek çok kimse bugün hala bu eleştirilerin geçerli olduğunu düşünmektedir. Pascal üzerindeki bu haksız damga, bugün Pascal’ın önündeki en büyük sorunlardan biridir.

12 – Perl, bir dil bilimci olup NASA’da sistem yöneticisi olarak çalışan Larry Wall tarafından geliştirilmiş bir programlama dilidir. Yoğun şekilde metin işleme ve görüntü tanıma söz konusu olduğunda kullanılabilecek en güçlü ve pratik programlama dilidir. 22 yıldır geliştirilen ve özgür yazılım çerçevesinde kaynak kodu açık olarak sunulan Perl programlama dili hemen hemen tüm işletim sistemlerinde çalışmaktadır.

Larry Wall Perl’i yazarken C, sed, AWK ve sh gibi pek çok dilden önemli ve güçlü özellikler ödünç almıştır. Larry Wall tarafından Perl 6 sürümünin hazırlık çalışmaları devam etmektedir.

İsim

Perl ismi bir kısaltma olmayıp açılımı yoktur. Bu yüzden PERL olarak yazılmaz. Ancak Perl kelimesine karşılık olarak daha sonradan çeşitli açılımlar teklif edilmiştir. Bunların en çok bilinenleri arasında “Practical Extraction and Report Language” (Pratik Çıkarım ve Raporlama Dili) ve Wall tarafından mizahi bir şekilde ortaya atılan “Pathologically Eclectic Rubbish Lister” (Hastalıklı Derecede Eklektik ve Saçma Listeleyici) yer alır. Kısaltma şeklinde yorumlarının kendisinden sonra geldiği bu tip kelimeler için İngilizce’de “backronym” (back geri + acronym kısaltma) terimi kullanılmaktadır.

Modüller

Perl ile ilgili sloganlardan bir tanesi, “Perl programlarının %90’ı zaten yazılmıştır!” sözüdür. Bunun sebebi CPAN yani Comprehensive Perl Archive Network olarak isimlendirilen ve Perl ile ilgili binlerce hazır modülü barındıran sistemdir. Bu madde yazıldığı esnada CPAN bünyesinde 3739 Perl geliştiricisi, 6646 Perl modülü bulunmaktadır. 2421 MB yer kaplayan sistemin 247 yansısı bulunmaktadır. Bunun anlamı şudur: Bir işle ilgili modül, fonksiyon, sistem, vs. büyük bir olasılıkla zaten yazılmıştır, hazır olarak alıp kullanılabilir.

13 – PHP : Hypertext Preprocessor (Türkçe: Üstünyazı Önişlemcisi ) (Aslen: Personal Home Page – Kişisel Ana Sayfa) , internet için üretilmiş, sunucu taraflı, çok geniş kullanımlı, genel amaçlı, HTML içerisine gömülebilen betik ve programlama dilidir. İlk kez 1995 yılında Rasmus Lerdorf tarafından yaratılan PHP’nin geliştirilmesi bugün PHP topluluğu tarafından sürdürülmektedir. Ocak 2013 itibariyle 244 milyondan fazla web sitesi PHP ile çalışırken, 2.1 milyon web sunucusunda PHP kurulumu bulunmaktadır.

PHP kodları PHP işleme modülü bulunan bir web sunucusu tarafından yorumlanır ve çıktı olarak web sayfası üretilir. Bu kodlar veriyi işlemek üzere harici bir dosyaya kaydedilerek çağırılabildiği gibi doğrudan HTML kodunun içine de gömülebilir. PHP zaman içinde bir komut satırı arayüzü sunacak şekilde evrilmiştir, PHP-GTK yardımıyla grafiksel masaüstü uygulaması geliştirmek de mümkündür.

PHP özgür bir yazılım olup PHP Lisansı ile dağıtılmaktadır. Bu lisans kullanım şartları kısmında GNU Genel Kamu Lisansı ile örtüşmese de, PHP tüm web sunuculara ve hemen hemen tüm işletim sistemi ve platforma ücretsiz olarak yüklenebilir.

Tarihçe

PHP’nin geliştirilmesi 1994 yılında Rasmus Lerdorf’un kişisel web sitesini yönetmek için bir takım CGI (İngilizce: Common Gateway Interface) Perl betikleri yazmasıyla başladı. Rasmus bu betikler yardımıyla özgeçmişini sitede görüntülüyor ve sitenin ziyaretçi trafiğini kaydediyordu. Bir süre sonra web formları ile etkileşime girebilecek, veritabanları ile iletişim kurabilecek ve daha hızlı çalışabilecek şekilde bu betikleri C ile yeniden kodladı ve bu uygulamaya Kişisel Ana Sayfa/Form Yorumlayıcı (PHP/FI, İngilizce: Personal Home Page/Forms Interpreter) adını verdi. PHP/FI yardımıyla basit anlamda dinamik web siteleri oluşturmak oldukça kolaydı. Rasmus, 8 Haziran 1995 tarihinde hata ayıklama sürecini hızlandırmak ve kaynak kodu iyileştirmek üzere bir Usenet tartışma grubunda PHP/FI uygulamasını Personal Home Page Tools (PHP Tools) adıyla ilk kez duyurdu. 2013 yılı itibariyle PHP içinde mevcut olan Perl benzeri değişken tanımlama, form yönetimi ve betik kodları arasına HTML kodu yerleştirebilme gibi temel özellikler bu ilk sürümde de mevcuttu. Sözdizimi genel olarak Perl’e benzese de daha kısıtlı ve basit ancak daha tutarsızdı. Bir geliştirme takımıyla aylar süren çalışma ve test aşamalarının ardından PHP/FI 2 sürümü 1997 Kasım ayında resmi olarak duyuruldu.

Zeev Suraski ve Andi Gutmans 1997 yılında ayrımlayıcı’yı baştan yazdılar ve dilin ismini PHP: Hypertext Preprocessor olarak değiştirerek PHP 3 ün temellerini attılar. Bunu PHP 3 ün herkese açık olan test sürecinin başlaması izledi ve 1998 yılının Haziran ayında PHP 3 resmi olarak duyuruldu. Suraski ve Gutmans bu sürecin ardından PHP’nin çekirdeğini sil baştan kodlamak suretiyle 1999 yılında Zend Motorunu geliştirdiler ve İsrail’in Ramat Gan kentinde Zend Technologies isimli bir şirket kurdular.

22 Mayıs 2000 tarihinde temelleri Zend Engine 1.0 ile güçlendirilmiş PHP 4 duyuruldu ve Ağustos 2008 itibariyle 4.4.9 sürümüne ulaşana kadar aktif olarak geliştirildi. Bugün PHP 4 ün geliştirilmesi durdurulmuştur ve güvenlik güncellemeleri dahil olmak üzere üzerinde hiçbir iyileştirme yapılmamaktadır.

13 Temmuz 2004 tarihinde yeni Zend Engine II ile güçlendirilmiş PHP 5 yayınlandı. PHP 5, nesneye yönelik programlama için çok daha fazla olanak sağlıyor, PHP Veri Nesneleri (PDO) eklentisi yardımıyla veritabanlarına erişim için oldukça tutarlı ve hızlı bir arayüz yanında performansa yönelik çok sayıda iyileştirme barındırıyordu.2008 yılında PHP 4 ün tutarlı sürümünün yayınlanması durduruldu ve PHP 5 geliştirilmesi devam eden tek tutarlı sürüm oldu. PHP duruk içselleştirim (İngilizce: Late static binding) özelliği barındırmıyordu ancak 5.3 sürümü ile bu önemli eksik giderildi.

Ek bilgiler

PHP, özellikle mysql veritabanıyla birlikte ve Linux işletim sistemi altında iyi bir performans sergilemektedir. C/C++ diline olan benzerliği nedeniyle bu dili önceden bilenlerin PHP öğrenmesi oldukça kolaydır. Kolay öğrenilmesi ve hızlı performansı nedeniyle Facebook, YouTube, Yahoo, Wikipedia ve OGame gibi dünyaca ünlü sitelerin yazımında kullanılmasına rağmen, kodların kolay anlaşılabilmesi açısından ve birden fazla programcı tarafından sürekli geliştirilmesi gerekli büyük projelerde Java nın kullanılması daha uygun görülmektedir. Ancak sadece web tabanlı yazılımın geliştirilmesi söz konusu olduğunda Java ya göre öğrenilmesinin daha kolay olması nedeniyle genellikle PHP tercih edilmektedir. PHP, web tasarımında önemli kolaylıklar sağlasa da 2005 te Google in AJAX kullanmaya başlamasından sonra tek başına öğrenilmesi yeterli olmamakta ve AJAX’ı öğrenmek için gerekli JavaScript, XML, HTML, (ve CSS) ile birlikte bir bütün oluşturabilmektedir.

Program dizimi

Aşağıdaki örnek programda HTML içerisine gömülü PHP kodunu görebilirsiniz.

<!DOCTYPE html>
<html>
    <head>
        <title>PHP Testi</title>
    </head>
    <body>
        <?php echo '<p>Merhaba Dünya</p>'; ?>
    </body>
</html>

Unutmayın ki PHP kodunun HTML içerisinde gömülü olması zorunlu değildir. Benzeri bir program aşağıdaki gibi yazılabilir.

 <?='Hello world' ?>

Fonksiyonlar

PHP yazılımı büyük bir fonksiyon kütüphanesi ile birlikte gelir. Gömülü fonksiyonların haricinde kendi fonksiyonunuzu aşağıdaki gibi tanımlayabilirsiniz.

<?php
function yasimiGetir($dogumYili) {
    $yas = date('Y') - $dogumYili;
    return $yas;
}

echo yasimiGetir(1981) . ' yaşındayım.';
?>

14 – Python, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir.

Girintilere dayalı basit sözdizimi, dilin öğrenilmesini ve akılda kalmasını kolaylaştırır. Bu da ona söz diziminin ayrıntıları ile vakit yitirmeden programlama yapılmaya başlanabilen bir dil olma özelliği kazandırır.

Modüler yapısı, sınıf dizgesini (sistem) ve her türlü veri alanı girişini destekler. Hemen hemen her türlü platformda çalışabilir. (Unix , Linux, Mac, Windows, Amiga, Symbian). Python ile sistem programlama, kullanıcı arabirimi programlama, ağ programlama, uygulama ve veritabanı yazılımı programlama gibi birçok alanda yazılım geliştirebilirsiniz. Büyük yazılımların hızlı bir şekilde prototiplerinin üretilmesi ve denenmesi gerektiği durumlarda da C ya da C++ gibi dillere tercih edilir.

Geçmiş

Ana madde: Python’un tarihçesi

Guido van Rossum

Geliştirilmeye 1990 yılında Guido van Rossum tarafından Amsterdam‘da başlanmıştır. Adını sanılanın aksine bir yılandan değil Guido van Rossum’un çok sevdiği, Monty Python adlı altı kişilik bir İngiliz komedi grubunun Monty Python’s Flying Circus adlı gösterisinden almıştır. Günümüzde Python Yazılım Vakfı çevresinde toplanan gönüllülerin çabalarıyla sürdürülmektedir. Python 1.0 sürümüne Ocak1994’te ulaşmıştır. Son kararlı sürümü, 2.x serisinde Python 2.7 ve 3.x serisinde Python 3.5.2’dir. 3 Aralık 2008 tarihinden itibaren 3.x serisi yayınlanmaya başlamıştır; ancak 3.x serisi 2.x serisiyle uyumlu değildir.

Kullanım

Django, Zope uygulama sunucuları, YouTube ve orijinal BitTorrent istemcisi, Pardus Linux dağıtımı Python kullanan önemli projelerden bazılarıdır. Ayrıca Google, NASA ve CERN gibi büyük kurumlar da Python kullanmaktadır.

Ayrıca OpenOffice.org, GIMP, Inkscape, Blender, Scribus ve Paint Shop Pro gibi bazı programlarda betik dili olarak kullanılır.

Pek çok Linux dağıtımında Python öntanımlı bir bileşen olarak gelir.

Sözdizimi

Python programlama dilinin söz dizimi ve renklendirmesi.

Python’un son derece kolay okunabilir olması düşünülmüştür. Bu yüzden örneğin küme parantezleri yerine girintileme işlemi kullanılır. Hatta bazı durumlarda girintileme işlemine dahi gerek kalmadan kodun ilgili bölümü tek satırda yazılabilir. Böylece Python, program kodunuzu en az çaba ile ve hızlıca yazmanıza imkân tanır. Sade sözdizimi ile diğer programlama dillerinden üstündür.

Girintileme

Python’da ifade bloklarını sınırlandırmak için süslü ayraçlar ya da anahtar kelimeler yerine beyaz boşluk girintileme kullanılır. Belli ifadelerden sonra girinti artar; girintinin azalması geçerli blokun sonlandığını gösterir.

İşleçler

* işleci, çarpma işlemleri için

/ işleci, bölme işlemleri için

+ işleci, toplama işlemleri için

- işleci, çıkarma işlemleri için

< işleci, ‘küçüktür’ anlamına gelir

> işleci, ‘büyüktür’ anlamına gelir

== işleci, ‘eşittir’ anlamına gelir

<= işleci, ‘küçük eşittir’ anlamına gelir

>= işleci, ‘büyük eşittir’ anlamına gelir

!= işleci, ‘eşit değil’ anlamına gelir

** işleci, ‘üs alma’ anlamına gelir

True işleci, ‘doğru’ anlamına gelir

False işleci, ‘yanlış’ anlamına gelir

and işleci, ‘ve’ anlamına gelir

or işleci, ‘veya’ anlamına gelir

not işleci, ‘değil’ anlamına gelir.

İfadeler ve akış kontrolü

Python ifadeleri şunları içerir:

  • if ifadesi, bir kod blokunu belli bir koşula bağlı olarak, else ve elif (else-if’ın kisaltmasi) ile birlikte çalıştırır.
  • for ifadesi, yinelenebilir bir nesne üzerinden yineleme yapar, bu sırada ilgili bloktaki her ögeyi bir yerel değişkene atar.
  • while ifadesi, koşulu doğru olduğu sürece o kod blokunu çalıştırır.
  • try ifadesi, eklenmiş kod blokundan dolayı oluşan hataları yakalar ve except maddeleriyle; ayrıca finally blokundaki temizleme kodunun blok nasıl sonlanırsa sonlansın çalıştırılmasını sağlar.
  • class ifadesi, bir kod blokunu çalıştırır ve onun yerel adalanını bir sınıfa atar, bu sayede o sınıf Nesne Yönelimli Programlamada kullanılabilir.
  • def ifadesi ile fonksiyon tanımlanır.
  • with ifadesi, bir kod blokunu bir içerik yöneticisine hapseder (örneğin bir kod bloku çalışıtırılmadan önce bir kilit edinir ve sonrasında bu kilidi çözer)
  • pass ifadesi bir NOP görevi görür ve geçici kod bloku yerine kullanılabilir.
  • print ifadesi bir ekrana yazdırma görevi görür.

Her ifadenin kendi sözdizimi vardır, örneğin def ifadesi diğer ifadelerin genelinin aksine blokunu anında çalıştırmaz.

Metotlar

Nesneler üzerindeki metotlar nesnenin sınıfına eklenmiş fonksiyonlardır; örnek.metod(değişken) sözdizimi, normal metot ve fonksiyonlar için Sınıf.metod(örnek, değişken) ifadesi için bir sözdizimsel şekerdir. Python metotlarının örnek verisine ulaşmaları için açık self parametresine sahip olmaları gerekir. Bu durum Java, C++, Ruby gibi bazı diğer nesne tabanlı programlama diliyle farklılık gösterir.

Standart kütüphane

Python’un çok büyük bir standart kütüphanesi vardır. Bu, dilin artı özelliklerinden biri olarak kabul edilir. Standart kütüphane, “itertools” ve “functools” olmak üzere iki modül içermektedir.

Örnekler

Python 3 ve üstü sürümler için uygundur.

Merhaba dünya

# -*- coding: utf-8 -*-

print("Merhaba Dünya")

Yorum satırları

#Tek satırlık bir python yorumu
"""
Bu çok satırlı
bir python 
yorumu
...
"""

Girdi alma ve ekrana basma

# -*- coding: utf-8 -*-

veri = input("Lütfen bir veri giriniz: ")
print(veri)

15 – Ruby, nesneye yönelik, dinamik, reflektif bir programlama dilidir. Ruby dili, Yukihiro Matsumoto tarafından Japonya’da tasarlanmaya ve geliştirilmeye başlanmıştır.

Sözdizimi olarak, Ada, Perl, Smalltalk, Lisp, Eiffel gibi programlama dillerinden etkilenen Ruby; Python ile kimi ortak sözdizimi özelliklerine sahiptir. Fonksiyonel, nesneye yönelik, dinamik, reflektif gibi çoklu programlama paradigmalarını destekler.

Özgür bir yazılım olan Ruby; GPL ve Ruby lisansı ile lisanslanmıştır.

Tarihçe

Ruby dilinin temelleri 1993 yılında atılmıştır. Bu dönemde nesneye dayalı bir betik dili arayışı içinde olan Japon yazılımcı Yukihiro “Matz” Matsumoto; Perl, Python gibi mevcut programlama dillerini araştırmasına rağmen aradığını bulamayınca yeni bir programlama dili tasarlamaya başladı. Şubat 1993’te Matz, bir arkadaşı ile yaptığı çevrim içi sohbet esnasında arkadaşının bu yeni dil için önerdiği Ruby ismini uygun buldu ve bu isimle dili geliştirmeye başladı.

Aralık 1995’te Ruby’nin 0.95 ile ilk genel sürümü yayınlandı. Aynı ay içerisinde peş peşe 3 sürüm daha yayınlandı. Bu sürümler Japonya’da yerel haber gruplarında duyuruldu.

İlk genel sürümden tam bir yıl sonra, Aralık 1996’da Ruby 1.0 yayınlandı. Anavatanı Japonya’da hızla tanınan ve yayılan Ruby, 1999’da İngilizce yazıların yayınlanması ile tüm dünyaya açılma olanağına kavuştu.

2000 yılında Japonya’da Python’dan daha popüler bir dil haline gelen Ruby’nin İngilizce ile yazılan ilk kitabı , Programming Ruby adıyla aynı yılın Ekim ayında yayınlandı.

Özellikler

Ubuntu’da Ruby programlama dili

  • Nesne tabanlı programlama (kalıtsallık, mixin ve metaclass desteği)
  • 4 farklı tipte değişken tanımlanabilir: Global, class, instance ve local
  • Her şey bir ifade ve aynı zamanda obje
  • Hata ve istisna yönetimi
  • Garbage collection (tr. Çöp toplama)
  • Yüksek taşınabilirlik
  • Geniş standart kütüphane desteği (YAML, JSON, XML, CGI, OpenSSL, HTTP, FTP, RSS)
  • Perl benzeri dil seviyesinde doğal düzenli ifade desteği
  • Rasyonel sayılar, çok büyük sayılar ile çalışabilme

Bununla beraber Ruby içindeki UTF-8 desteği sınırlıdır.

Sözdizimi ve yapısı

Ruby’nin sözdizimi günümüzde de yoğun olarak kullanılan Perl ve Python ile büyük benzerlikler gösterir. Sınıf ve metot tanımlamaları anahtar kelimelerle belirlenir. Ruby’de Perl’in aksine, değişken adlarının başında belirleyici karakterler ($, @@, % gibi) kullanmak bir zorunluluk değildir. Python’un tersine girintilerin dilin sözdiziminde bir etkisi yoktur.

Ruby, tek çoklu kalıtıma Java gibi izin vermemesine rağmen mixin adı verilen nesnelerle bir çeşit arayüz tanımlama imkânı verir. Ayrıca paketler üzerinden de bu sınırlama geçiştirilebilir.

Ruby’nin tasarımında dikkate alınan diller Ada, Eiffel, Lisp, Perl ve Smalltalk’dur. Dolayısıyla bir betik dili yapısına da sahiptir. Ruby, nesneye yöneliklilik açısından tamamen öyle olan Java ile Smalltalk arası olup yüzde yüz bu paradigmayı uygulamamaktadır.

Kullanılabileceği dizgeler

Ruby data classes.jpg

Ruby yorumlayıcısı birçok işletim sistemi için yazılmıştır. Hemen hemen tüm işletim sistemlerinde çalışabilir. Bunlardan bazıları şunlardır:

  • Neredeyse tüm Unix türevleri
  • Microsoft platformları (DOS, Windows 95/98/XP/NT/2000/2003/Vista/7/8/8.1/10)
  • Mac OS X
  • BeOS
  • Amiga
  • OS/2
  • Symbian

16 – Scala, Java’ya çok yakın olan bir programlama dilidir. Özelliği, programcının aynı zamanda emperatif ve fonksiyonel stilde program yazmasına müsaade etmesidir.

Scala, hem nesne yönelimli hem de fonksiyonel programlama metodolojilerini içeren bir programlama dilidir. Scala‘nın kendi derleyecisi olmasına rağmen Java Byte-Code üretebiliyor yani JVM üzerinde koşturabiliyorsunuz.Bu sayede java kütüphanelerini,framework’lerini,tool’larını rahatlıkla scalaile kullanabilirsiniz.

 Hangi programlama dillerini öğrenmeliyim

Programlama dilleri listesi

A

  • A+
  • A++
  • A# .NET
  • A# (Axiom)
  • A-0 System
  • ABAP
  • ABC
  • ABC ALGOL
  • Abel
  • ABLE
  • ABSET
  • ABSYS
  • Abundance
  • ACC
  • Accent
  • ActForex
  • Action!
  • ActionScript
  • Ace DASL
  • ACT-III
  • Ada
  • Adenine
  • Afnix
  • Agda
  • Agena
  • Agora
  • AIS Balise
  • Aikido
  • Alef
  • Alef++
  • ALF
  • ALGOL 58
  • ALGOL 60
  • ALGOL 68
  • Alice
  • Alma-0
  • Ambi
  • Amiga E
  • AMOS
  • AMPLE
  • AngelScript
  • Apex
  • APL
  • AppleScript
  • Arc
  • Arduino
  • ARexx
  • Argus
  • ARLA
  • Asp
  • AspectJ
  • Assembly language
  • ATS
  • AutoHotkey
  • AutoIt
  • Avaga
  • Averest
  • AWK
  • Axum
  • Ateji PX

B

  • B
  • Babbage
  • Bash
  • BASIC
  • bc
  • BCPL
  • BeanShell
  • Batch (Windows/Dos)
  • Bertrand
  • BETA
  • Bigwig
  • Bistro
  • BitC
  • BLISS
  • Blitz Basic
  • Blue
  • Bon
  • Boo
  • Boomerang
  • Bourne shell (bash ve ksh dahil)
  • BREW
  • BPEL
  • BUGSYS
  • BuildProfessional

C

  • C
  • C–
  • C++ – ISO/IEC 14882
  • C# – ISO/IEC 23270
  • C@
  • C/AL
  • Caché ObjectScript
  • Caml
  • Cat
  • Cayenne
  • Cecil
  • Cel
  • Cesil
  • CFML
  • Cg
  • Ch interpreter (C/C++ yorumlayıcısı)
  • Chapel
  • CHAIN
  • Charity
  • CHILL
  • CHIP-8
  • chomski
  • CHR
  • Chrome
  • ChucK
  • CICS
  • CIL
  • Cilk
  • CL (Honeywell)
  • CL (IBM)
  • Claire
  • Clarion
  • Clean
  • Clipper
  • CLIST
  • Clojure
  • CLU
  • CMS-2
  • COBOL – ISO/IEC 1989
  • CobolScript
  • Cobra
  • CODE
  • Col
  • Cola
  • ColdC
  • ColdFusion
  • Cool
  • COMAL
  • Common Lisp (CL olarak da bilinir)
  • COMPASS
  • Component Pascal
  • COMIT
  • Converge
  • Coral 66
  • Corn
  • CorVision
  • Coq
  • COWSEL
  • CPL
  • csh
  • CSP
  • CSKA
  • Csound
  • Curl
  • Curry
  • Cyclone

D

  • D
  • D#
  • DASL (Datapoint’s Advanced Systems Language)
  • DASL (Distributed Application Specification Language)
  • DataFlex
  • Datalog
  • DATATRIEVE
  • dBase
  • dc
  • DCL
  • Deesel (eskiden G)
  • Delphi
  • Dialect
  • DinkC
  • Dialog Manager
  • DIBOL
  • DL/I
  • Dream Maker (BYOND)
  • DotLisp
  • Draco
  • Dylan
  • dylan.NET
  • Dynace
  • DYNAMO

E

  • E
  • Ease
  • EASY
  • Easy PL/I
  • Easycoder
  • EASYTRIEVE PLUS
  • eC (Ecere C)
  • ECMAScript
  • Ecol
  • eDeveloper
  • Edinburgh IMP
  • EGL
  • Eiffel
  • Einstein
  • ELAN
  • elastiC
  • Elena
  • Elf
  • Emacs Lisp
  • Emerald (programlama dili)
  • Englesi
  • Epigram
  • Erlang
  • Escapade
  • Escher
  • ESPOL
  • Esterel
  • Etoys
  • Euclid
  • Euler
  • Euphoria
  • CMS EXEC
  • EXEC 2
  • EXOL

F

  • F
  • F#
  • Factor
  • Falcon
  • Fancy
  • Fantom
  • Felix
  • Ferite
  • FFP
  • FILETAB
  • Fjölnir
  • Flash
  • FL
  • Flavors
  • Flex
  • FLOW-MATIC
  • Fly
  • FOCAL
  • FOCUS
  • FOIL
  • FORMAC
  • FormWare
  • @Formula
  • Forth
  • Fortran – ISO/IEC 1539
  • Fortress
  • FoxBase
  • FoxPro
  • FP
  • FPr
  • Franz Lisp
  • Frink
  • F-Script
  • Fuxi

G

  • G
  • Gambas
  • GameMonkey Script
  • Game Maker Language
  • GAMS
  • GAP
  • G-code
  • GDL
  • Gibiane
  • GJ
  • GLBasic
  • GLSL
  • GNU E
  • GM
  • Go
  • Go!
  • GOAL
  • Gödel
  • Godiva
  • GOM (Good Old Mad)
  • Goo
  • GOTRAN
  • GPSS
  • GraphTalk
  • GRASS
  • Green
  • Groovy
  • GSL Shell

H

  • HAL/S
  • Handel-C, Celoxica
  • Harbour
  • IBM HAScript
  • Haskell
  • Hemant
  • HaXe
  • High Level Assembly
  • HLSL
  • Hop
  • Hope
  • Hugo
  • Hume
  • HyperTalk

I

  • I
  • IBAL
  • IBM Basic assembly language
  • IBM Informix-4GL
  • IBM RPG
  • ICI
  • Icon
  • Id
  • IDL
  • Idle
  • IMP
  • Inform
  • Io
  • Ioke
  • IPL
  • IPTSCRAE
  • IronPython
  • IronRuby
  • ISPF
  • ISWIM
  • Ivy

J

  • J
  • J#
  • J++
  • JADE
  • Jako
  • JAL
  • Janus
  • JASS
  • Java
  • JavaScript
  • JCL
  • JEAN
  • Join Java
  • JOSS
  • Joule
  • JOVIAL
  • Joy
  • JScript
  • Jython
  • JavaFX Script

K

  • K
  • Kaleidoscope
  • Karel
  • Karel++
  • Kaya
  • KEE
  • Kiev
  • KIF
  • Kite
  • Kogut
  • KRC
  • KRL
  • KRYPTON
  • ksh
  • KUKA

L

  • L
  • L# .NET
  • L++.NET (geliştirilmiyor)
  • LabVIEW
  • Ladder
  • Lagoona
  • LANSA
  • Lasso
  • LaTeX
  • Lava
  • LC-3
  • Leadwerks Script
  • Leda
  • Legoscript
  • Limbo
  • Limnor
  • LINC
  • Lingo
  • Linoleum
  • LIS
  • LISA
  • Lisaac
  • Lisp – ISO/IEC 13816
  • Lite-C Lite-c
  • Lithe
  • Little b
  • Logix
  • Logo
  • Logtalk
  • LOTUS
  • LPC
  • LSE
  • LSL
  • Lua
  • Lucid
  • Lush
  • Lustre
  • LYaPAS
  • Lynx

M

  • M
  • M2001
  • M4
  • MAD (Michigan Algorithm Decoder)
  • MAD/I
  • Magik
  • Magma
  • MapBasic
  • Maple
  • MAPPER (Unisys/Sperry) şimdi BIS’in parçası
  • MARK-IV (Sterling/Informatics) şimdi VISION:BUILDER of CA
  • Mary
  • MASM Microsoft Assembly x86
  • Mathematica
  • MATLAB
  • Maxima (ayrıca bakınız: Macsyma)
  • MaxScript iç dili 3D Studio Max
  • Maya (MEL)
  • MDL
  • MelloCOMPLEX
  • Mercury
  • Mesa
  • Mesham
  • Metafont
  • MetaL
  • Metalua
  • Microcode
  • MicroScript
  • MIIS
  • MillScript
  • MIMIC
  • min
  • Mindscript
  • Miranda
  • MIVA Script
  • ML
  • Moby
  • Model 204
  • Modula
  • Modula-2
  • Modula-3
  • Mohol
  • MOLSF
  • Mondrian
  • MOO
  • Mortran
  • Moto
  • Mouse
  • MQL – MeaTrader 3 programlama dili
  • MQ4 – MetaTrader 4 programlama dili
  • MQ5 – MetaTrader 5 programlama dili
  • MPD
  • MSIL – CIL
  • MSL
  • MSX BASIC
  • MUMPS
  • Murphy Language
  • MXML
  • Mythryl

N

  • Napier88
  • NATURAL
  • NEAT chipset
  • Neko
  • Nemerle
  • NESL
  • Net.Data
  • NetLogo
  • NewLISP
  • NEWP
  • NewtonScript
  • NGL
  • Nial
  • Nice
  • Nickle
  • Nomad2
  • NPL
  • Nosica
  • Not eXactly C (NXC)
  • Not Quite C (NQC)
  • Nu
  • NSIS
  • Nusa
  • NetBean

O

  • o:XML
  • Oak
  • Oberon
  • Object Lisp
  • ObjectLOGO
  • Object REXX
  • Object Pascal
  • Objective-C
  • Objective Caml
  • Objective-J
  • Obliq
  • Obol
  • occam
  • occam-π
  • Octave
  • OmniMark
  • Onyx
  • Opal
  • OpenEdge ABL
  • OPL
  • OPS5
  • OptimJ
  • Oracle
  • Orc
  • ORCA/Modula-2
  • Orwell
  • Oxygene
  • Oz

P

  • PARI/GP
  • Pascal – ISO 7185
  • Pawn
  • PCASTL
  • PCF
  • PEARL
  • Perl
  • Prajyot
  • PDL
  • PHP
  • Phrogram
  • Pico
  • Pict
  • Piet
  • Pike
  • PIKT
  • PILOT
  • Pizza
  • PL-11
  • PL-6
  • PL/0
  • PL/B
  • PL/C
  • PL/I – ISO 6160
  • PL/M
  • PL/P
  • PL/SQL
  • PL360
  • PLANC
  • Plankalkül
  • PLEX
  • PLEXIL
  • Pliant
  • Plus
  • POP-11
  • Poplog
  • PostScript
  • PortablE
  • Powerhouse
  • PowerBuilder
  • PowerScript
  • PPL
  • Processing
  • Prograph
  • PROIV
  • Prolog
  • Visual Prolog
  • Promela
  • PROTEL
  • ProvideX
  • Pure
  • Python

Q

  • Q (programlama dili)
  • Q (Kx Systems programlama dili)
  • Qi
  • QtScript
  • QBASIC
  • QuakeC
  • QPL

R

  • R
  • R++
  • Racket
  • RAPID
  • Rapira
  • Ratfiv
  • Ratfor
  • Rashed
  • RBScript
  • rc
  • REBOL
  • Redcode
  • REFAL
  • Reia
  • Revolution
  • rex
  • REXX
  • Rlab
  • ROOP
  • RPG
  • RPL
  • RSL
  • RTL/2
  • Ruby
  • RapidBATCH

S

  • SAY_key_language
  • S
  • S2
  • S3
  • S-Lang
  • S-PLUS
  • SA-C
  • SabreTalk
  • SAC
  • SAIL
  • SALSA
  • SAM76
  • SAS
  • SASL
  • Sather
  • Sawzall
  • SBL
  • Scala
  • Scheme
  • Scilab
  • Scratch
  • Script.NET
  • Sculptor 4GL
  • Sed
  • Seed7
  • Self
  • SenseTalk
  • SETL
  • Shakespeare
  • Shift Script
  • SiMPLE
  • SIMPOL
  • Simscape
  • SIMSCRIPT
  • Simula
  • Simulink
  • SISAL
  • Slate
  • SLEEP
  • SLIP
  • SMALL
  • Small Basic
  • Smalltalk
  • SML
  • SNOBOL(SPITBOL)
  • Snow
  • Snowball
  • SNUSP
  • SOAP
  • SOL
  • Span
  • SPARK
  • Spice
  • SPIN
  • SP/k
  • SPS
  • Squeak
  • Squirrel
  • SR
  • S/SL
  • Strand
  • STATA
  • Stateflow
  • Subtext
  • Suneido
  • SuperCollider
  • SuperTalk
  • Swift
  • SYMPL
  • SyncCharts
  • SystemVerilog

T

  • T
  • TACL
  • TACPOL
  • TADS
  • TAL
  • Tcl
  • TDL (Tally Definition Language)
  • Tea
  • TELON – Mainframe Online IMS/COBOL Generator
  • TECO
  • TELCOMP
  • gt-Telon
  • TenCORE
  • TeX
  • TEX
  • TIE
  • thinBasic
  • Timber
  • Tom
  • TOM
  • Topspeed
  • TPU
  • Trac
  • T-SQL
  • TTCN
  • Turing
  • Turtle
  • TUTOR
  • TXL

U

  • Ubercode
  • Unicon
  • Uniface
  • UNITY
  • Unix shell
  • UnrealScript
  • USE (Regency Systems)

V

  • Vala
  • Genie
  • VBA
  • VBScript
  • Verilog
  • VHDL
  • Visual Basic
  • Visual Basic .NET
  • Visual C++
  • Visual C++ .Net
  • Visual C# .Net
  • Visual DataFlex
  • Visual DialogScript
  • Visual FoxPro
  • Visual J++
  • Visual Objects
  • Vvvv

W

  • WATFIV, WATFOR
  • WebQL
  • Winbatch

X

  • X++
  • X10
  • XBL
  • XC
  • XCODE
  • xHarbour
  • XL
  • XOTcl
  • XPL
  • XPL0
  • XQuery
  • XSLT – Bakınız: XPath

Y

  • Y
  • Yorick
  • YAL
  • YAML
  • YQL
  • Yoix

Z

  • Z
  • Z notation
  • Zeno
  • Zonnon
  • ZOPL
  • ZPL
  • ZZT-oop

bu yazıda wikipedia kaynak olarak kullanılmıştır.

Photo of author

Bilir Kişi

"Takdir ediliyorsanız değil taklit ediliyorsanız başarmışsınız demektir." - Einstein Profesyonel işbirlikleriniz için bilirkisi[at]webdeyazilim[.]com adresime mail gönderebilirsiniz.

Yorum yapın