<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ahmet Kakıcı &#187; prolog</title>
	<atom:link href="http://www.ahmetkakici.com/tag/prolog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ahmetkakici.com</link>
	<description>Blog</description>
	<lastBuildDate>Sun, 03 Apr 2011 10:48:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Prolog ile Determinant Hesabı</title>
		<link>http://www.ahmetkakici.com/programlama/prolog-ile-determinant-hesabi/</link>
		<comments>http://www.ahmetkakici.com/programlama/prolog-ile-determinant-hesabi/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 11:37:42 +0000</pubDate>
		<dc:creator>Ahmet Kakıcı</dc:creator>
				<category><![CDATA[Programlama]]></category>
		<category><![CDATA[kod]]></category>
		<category><![CDATA[prolog]]></category>

		<guid isPermaLink="false">http://www.ahmetkakici.com/?p=104</guid>
		<description><![CDATA[Determinant; bir kare matrisi, reel bir sayıyla eşleştiren özel bir fonksiyondur. Sadece kare matrislere uygulanabilir. Determinant hesabının temel yolu minör ve kofaktörlerinin hesaplanması yöntemidir. Buna ek olarak kolay hesaplama için Sarrus Yöntemi adında başka bir yöntem daha geliştirilmiştir. Minör ve kofaktör hesabı ile daha büyük matrisleri daha sistemli bir şekilde çarpabiliriz. Minör tanım olarak: A [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Determinant" target="_blank">Determinant</a>; bir kare matrisi, reel bir sayıyla eşleştiren özel bir fonksiyondur. Sadece kare matrislere uygulanabilir. Determinant hesabının temel yolu minör ve kofaktörlerinin hesaplanması yöntemidir. Buna ek olarak kolay hesaplama için <a href="http://en.wikipedia.org/wiki/Rule_of_Sarrus" target="_blank">Sarrus Yöntemi</a> adında başka bir yöntem daha geliştirilmiştir.<br />
<span id="more-104"></span><br />
Minör ve kofaktör hesabı ile daha büyük matrisleri daha sistemli bir şekilde çarpabiliriz.<br />
Minör tanım olarak: A = (aij) nxn kare matrisinde bir aij ( 1≤i,j≤n)  öğesinin bulunduğu i. satır ve j. sütunun çıkarılmasıyla elde edilen n-1. dereceden kare matrisinin determinantıdır. Mij ile ifade edilir.<br />
A = (aij) nxn matrisinde aij öğesinin minörü olan Mij ‘nin (-1)^(i+j) ile çarpılmasıyla elde edilen sayıya aij öğesinin kofakötür denir ve Aij ile gösterilir.<br />
Bir kare matrisin minör ve kofaktörlerinin çarpımlarının toplamı o matrisin determinantını verir.<br />
Prolog dilinde yazılan programda da kofaktör ve minör hesabı ile determinant hesabı yapılmıştır. Goal kısmında örnek bir matris verilerek determinantı hesaplanıştır.</p>
<pre class="brush: jscript; title: ; notranslate">

DOMAINS
liste=integer*
matris = liste*
int=integer

PREDICATES
ilkEleman(liste,int)
uzunluk(liste,int)
detBul(liste,liste,int)
ilkleriSil(matris,matris)
negatif(int,int)
sonaAt(matris,matris)
tersCevirListe(matris,matris)
tersCeviriciListe(matris,matris,matris)
det(matris,int,int,int)

CLAUSES
ilkEleman([X|_],X).

uzunluk([],0).
uzunluk([_|K],U):-uzunluk(K,X),U=X+1.

ilkleriSil([],[]).
ilkleriSil([[_|BasKuyruk]|Kuyruk1],[ BasKuyruk |SonucKuyruk]):-
ilkleriSil(Kuyruk1,SonucKuyruk).

negatif(-1,1).
negatif(1,-1).

sonaAt([Bas|Kuyruk],Sonuc):-
tersCevirListe(Kuyruk,TersKuyruk),
tersCevirListe([Bas|TersKuyruk],Sonuc).

tersCevirListe(X,Y):-tersCeviriciListe(X,[],Y).
tersCeviriciListe([],X,X).
tersCeviriciListe([B|K],TMP,SONUC) :-
tersCeviriciListe(K,[B|TMP],SONUC).

detBul([Bas1,Kuyruk1|_],[Bas2,Kuyruk2|_],Sonuc):-
Sonuc = Bas1*Kuyruk2-Bas2*Kuyruk1.

det([Bas1,Bas2|_],_,Sonuc,_):-
uzunluk(Bas1,En),
En&lt;=2,
detBul(Bas1,Bas2,Sonuc),!.

det([Bas|_],Sayac,0,_):-uzunluk(Bas,En),En&lt;=Sayac,!.

det([Bas|Kuyruk],Sayac,Sonuc,_):-
YeniSayac=Sayac+1,
uzunluk(Bas,En),
En&gt;Sayac,
En&lt;=3,
sonaAt([Bas|Kuyruk],Sonda),
ilkEleman(Bas,KatSayi),
ilkleriSil(Kuyruk,KuyrukOrta),
det(KuyrukOrta,0,OrtaSonuc,_),
det(Sonda,YeniSayac,YanSonuc,_),
Sonuc=(KatSayi*OrtaSonuc)+YanSonuc,!.

det([Bas|Kuyruk],Sayac,Sonuc,X):-
YeniSayac=Sayac+1,
uzunluk(Bas,En),
En&gt;Sayac,
sonaAt([Bas|Kuyruk],Sonda),
ilkEleman(Bas,KatSayi),
ilkleriSil(Kuyruk,KuyrukOrta),
negatif(X,Y),
det(KuyrukOrta,0,OrtaSonuc,Y),
det(Sonda,YeniSayac,YanSonuc,Y),
Sonuc=(X*KatSayi*OrtaSonuc)+YanSonuc.

GOAL
write(&quot;_____&quot;),nl,det([[1,2,4,8],[2,2,7,11],[3,6,3,12],[4,13,0,5]],0,Sonuc,1),write(Sonuc).
</pre>
<p>Programda kullanılan yüklemlere tek tek bakacak olursak yüklemlerin yaptığı görevler aşağıda açıklanmıştır:</p>
<ul>
<li>ilkEleman(liste,int):  aldığı tamsayı listesinin ilk elemanını vermektedir.</li>
<li>uzunluk(liste,int) :  aldığı tamsayı listesinin eleman sayısını vermektedir.</li>
<li>detBul(liste,liste,int) :  2&#215;2 matrisin çarpımını yapar. Aldığı iki listenin uzunluğu da birbirine eşit ve iki olmalıdır.</li>
<li>ilkleriSil(matris,matris) :  Minörleri ilk satıra göre açtığım için verilen matrisin ilk satırını silmek için bu yüklem kullanılmıştır.</li>
<li>negatif(-1,1) :  Kofaktörlerin katsayılarını hesaplamak için kullanılmıştır. Her kofaktörde bir önceki kofaktörün katsayısının negatifi hesaplanmıştır.</li>
<li>sonaAt(matris,matris) :  Minörlerin hesabında bir sonraki sütuna göre açılım yapıldığında bu yüklem sayesinde ilk sütun sona atılarak ikinci sütun ilk sütun haline getirilir. Ayrıca 3&#215;3 matrislerde determinant hesaplanırken katsayılarının sırasıyla +1 ve -1 ile çarpılmasına bu yüklem sayesinde gerek kalmamıştır.</li>
<li>tersCevirListe(matris,matris) :  Sona at yükleminde ilk sütunu sona atmak için varolan matrisin ilk sütunu alınarak kalan matris ters çevirilerek ilk sütun başa koyulduktan sonra matris tekrar ters çevrilmiştir. Bu yüklem ters çevirme işlemini yapmaktadır.</li>
<li>tersCeviriciListe(matris,matris,matris) :  tersCevirListe yükleminde kullanılan geçici matrisi bu yüklem ile tanımlayarak asıl yüklemin iki parametre ile gerekli çevirmeyi yapması sağlanmıştır.<br />
det(matris,int,int,int) ) : det yüklemi bütün determinant çarpım işlemlerini gerçekleştirmektedir.</li>
</ul>
<p>Yukarıdan aşağıya doğru yazılmış dört yüklemi sırasıyla incelersek;</p>
<ol>
<li>İlk yüklem 2&#215;2 matris kaldığı zaman bunu detBul yüklemi sayesinde hesaplar ver geri döndürür.</li>
<li>İkinci yüklem ise ilk sütunu sona atarak hesaplanan determinantların durma koşulunu belirler. Eğer sayac değişkeni sıfır olmuşsa yani n sütun varsa ve her biri için açılım yapılmışsa sonuç değeri sıfır olarak döndürür.</li>
<li>Üçüncü yüklem ise 3. dereceden matrislerin determinant hesabında kullanılmıştır. 3. Dereceden matrislerde daha fazla alt matris olmadığından dolayı katsayı değişimine gerek kalmamıştır.</li>
<li>Dördüncü yüklem ise 4. derece ve üstü matrislerin determinantını hesaplarken kofaktörü değiştirmek için kullanılmıştır.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.ahmetkakici.com/programlama/prolog-ile-determinant-hesabi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Prolog ile Liste İşlemleri</title>
		<link>http://www.ahmetkakici.com/programlama/prolog-ile-liste-islemleri/</link>
		<comments>http://www.ahmetkakici.com/programlama/prolog-ile-liste-islemleri/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 13:43:46 +0000</pubDate>
		<dc:creator>Ahmet Kakıcı</dc:creator>
				<category><![CDATA[Programlama]]></category>
		<category><![CDATA[kod]]></category>
		<category><![CDATA[prolog]]></category>

		<guid isPermaLink="false">http://www.ahmetkakici.com/?p=102</guid>
		<description><![CDATA[Prolog&#8217;un bel kemiği olan liste veri yapısı için daha önceden kullandığım liste fonksiyonlarını aşağıda listeledim. Fonksiyonların isimlerinden ne iş yaptıkları belli oluyor yine de anlamadığınız yer olursa bir yorum bırakabilirsiniz.]]></description>
			<content:encoded><![CDATA[<p>Prolog&#8217;un bel kemiği olan liste veri yapısı için daha önceden kullandığım liste fonksiyonlarını aşağıda listeledim. Fonksiyonların isimlerinden ne iş yaptıkları belli oluyor yine de anlamadığınız yer olursa bir yorum bırakabilirsiniz.</p>
<p><span id="more-102"></span></p>
<pre class="brush: jscript; title: ; notranslate">

PREDICATES
listeGoster(liste)
uzunluk(liste,int)
uye(int,liste)
ekle(int,liste,liste)
yoksaEkle(int,liste,liste)
sil(int,liste,liste)
hepsiniSil(int,liste,liste)
elemanTopla(liste,int)
arttir(int,liste,liste)
birles(liste,liste,liste)
birlesim(liste,liste,liste)
kesisim(liste,liste,liste)
buda(liste,liste)
tersCevir(liste,liste)
tersCevirici(liste,liste,liste)
prefix(liste,liste)
suffix(liste,liste)

CLAUSES
listeGoster([]).
listeGoster([B|K]):-write(B),nl,listeGoster(K).

uzunluk([],0).
uzunluk([_|K],U):-uzunluk(K,X),U=X+1.

uye(X,[X|_]).
uye(X,[_|K]):-uye(X,K).

ekle(X,L,[X|L]).

yoksaEkle(X,L,L):-uye(X,L),!.
yoksaEkle(X,L,[X|L]).

sil(X,[X|L],L).
sil(X,[B|K1],[B|K2]):-sil(X,K1,K2).

hepsiniSil(_,[],[]).
hepsiniSil(X,[X|L],M):-sil(X,L,M),!.
hepsiniSil(X,[Y|K1],[Y|K2]):-sil(X,K1,K2).

elemanTopla([],0).
elemanTopla([X|K],T):-elemanTopla(K,Y),T=Y+X.

arttir(_,[],[]).
arttir(X,[B1|K1],[B2|K2]):-B2=B1+X,arttir(X,K1,K2).

birles([],L,L).
birles([B|K1],L2,[B|K2]):-birles(K1,L2,K2).

birlesim([],L,L).
birlesim([B|K1],L2,K2):- uye(B,L2),birlesim(K1,L2,K2),!.
birlesim([B|K1],L2,[B|K2]):- birlesim(K1,L2,K2).

kesisim([],_,[]).
kesisim(_,[],[]).
kesisim([B|K1],L2,[B|K2]):-uye(B,L2),kesisim(K1,L2,K2),!.
kesisim([_|K1],L2,K2):-kesisim(K1,L2,K2).

buda([],[]).
buda([B|K],L):- uye(B,K),buda(K,L),!.
buda([B|K1],[B|K2]):- buda(K1,K2).

tersCevir(X,Y):-tersCevirici(X,[],Y).
tersCevirici([],X,X).
tersCevirici([B|K],TMP,SONUC) :- tersCevirici(K,[B|TMP],SONUC).

prefix([],_).
prefix([B|K1],[B|K2]):-prefix(K1,K2).

suffix(X,Y):-tersCevir(X,TX),tersCevir(Y,TY),prefix(TX,TY).
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ahmetkakici.com/programlama/prolog-ile-liste-islemleri/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Prolog ile Matris Çarpımı</title>
		<link>http://www.ahmetkakici.com/programlama/prolog-ile-matris-carpimi/</link>
		<comments>http://www.ahmetkakici.com/programlama/prolog-ile-matris-carpimi/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 23:54:00 +0000</pubDate>
		<dc:creator>Ahmet Kakıcı</dc:creator>
				<category><![CDATA[Programlama]]></category>
		<category><![CDATA[kod]]></category>
		<category><![CDATA[prolog]]></category>

		<guid isPermaLink="false">http://www.ahmetkakici.com/?p=96</guid>
		<description><![CDATA[Matris çarpımı birçok programlama dilinde öncelikli verilen ödevlerden biri olsa gerek. Aşağıdaki kodu yazarken anladım ki prolog bu dillerin arasında yok ve olmamalı :) Prolog yapısından dolayı bu tip işlemleri yapmak için [bence] oldukça zor bir dil. Mantıksal programlamada veya özyinelemeli şekildeki problemlerin çözümünde kullanıldığı zaman az kod ile çok iş yapılabiliniyor ancak matris çarpımı [...]]]></description>
			<content:encoded><![CDATA[<p>Matris çarpımı birçok programlama dilinde öncelikli verilen ödevlerden biri olsa gerek. Aşağıdaki kodu yazarken anladım ki prolog bu dillerin arasında yok ve olmamalı :) Prolog yapısından dolayı bu tip işlemleri yapmak için [bence] oldukça zor bir dil. Mantıksal programlamada veya özyinelemeli şekildeki problemlerin çözümünde kullanıldığı zaman az kod ile çok iş yapılabiliniyor ancak matris çarpımı için aynı şeyi diyemiyorum ve öncelikle sizlere kodu takdim ediyorum :</p>
<p><span id="more-96"></span></p>
<pre class="brush: css; title: ; notranslate">
DOMAINS
liste=integer*
matris = liste*
int=integer

PREDICATES
listeGoster(liste)
matrisGoster(matris)
listeTopla(liste,int)
listeCarp(liste,liste,liste)
listeVeMatris(liste,matris,liste)
matrisCarp(matris,matris,matris)

CLAUSES
listeGoster([]).
listeGoster([B|K]):-write(B,&quot; &quot;),listeGoster(K).

matrisGoster([]).
matrisGoster([B|K]):-
write(&quot;[&quot;),
listeGoster(B),
write(&quot;]&quot;),nl,
matrisGoster(K).

listeTopla([],0).
listeTopla([X|K],T):-listeTopla(K,Y),T=Y+X.

listeCarp([],[],[]).
listeCarp([Bas1|Kuyruk1],[Bas2|Kuyruk2],[SonucBas|SonucKuyruk]):-
SonucBas=Bas1*Bas2,
listeCarp(Kuyruk1,Kuyruk2,SonucKuyruk).

listeVeMatris(_,[],[]).
listeVeMatris(Liste1,[MatrisBas|MatrisKuyruk],[CarpimBas|CarpimKuyruk]):-
listeCarp(Liste1,MatrisBas,Carpim),
listeTopla(Carpim,CarpimBas),
listeVeMatris(Liste1,MatrisKuyruk,CarpimKuyruk).

matrisCarp([],_,[]).
matrisCarp([Bas1|Kuyruk1],Matris2,[SonucBas|SonucKuyruk]):-
listeVeMatris(Bas1,Matris2,SonucBas),
matrisCarp(Kuyruk1,Matris2,SonucKuyruk).

GOAL
matrisCarp(
[[1,2,3],[3,4,5],[3,1,1]],
[[1,5,5],[2,3,3],[3,4,1],[5,5,1]], Y),
matrisGoster(Y).
</pre>
<p>Programda kullanılan yüklemlere tek tek bakacak olursak yüklemlerin yaptığı görevler aşağıda açıklanmıştır:</p>
<ul>
<li><em>listeGoster</em> : Liste elemanlarını write iç yüklemi ile göstermek yerine bu yüklem kullanılmıştır.</li>
</ul>
<ul>
<li> <em>matrisGoster</em> : Matris elemanlarını write iç yüklemi ile göstermek yerine bu yüklem kullanılmıştır, aldığı matrisin her bir satırını listeGoster yüklemi sayesinde ekrana yazdırır.</li>
</ul>
<ul>
<li><em>listeTopla</em>: Listenin elemanlarını toplayan bir yüklemdir. Çarpım sonucu elde edilen listeyi toplamada kullanılmıştır.</li>
</ul>
<ul>
<li><em>listeCarp</em>: Uzunluğu eşit iki liste elemanlarını birebir çarpan bir yüklemdir.</li>
</ul>
<ul>
<li><em>listeVeMatris</em>: Birinci matrisin ilk satırı ile ikinci matrisin tamamını çarpmak için bu yüklem kullanılmıştır.</li>
</ul>
<ul>
<li> <em>matrisCarp</em>: Verilen iki matrisin birincisini satır satır alıp ikinci matrisle listeVeMatris yüklemi saysinde çarpar.</li>
</ul>
<p>Programa goal kısmındaki ikinci matris transpozesi alınmış şekilde yazılmıştır. Transpozesini hesaplayacak bir yüklem yazmayı gözüme kestiremediğim için bu şekilde yaptım :) Umarım işinize yarar ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ahmetkakici.com/programlama/prolog-ile-matris-carpimi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kod Yazarken</title>
		<link>http://www.ahmetkakici.com/yazilim/kod-yazarken/</link>
		<comments>http://www.ahmetkakici.com/yazilim/kod-yazarken/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 09:52:08 +0000</pubDate>
		<dc:creator>Ahmet Kakıcı</dc:creator>
				<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[assembly]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[kod]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[prolog]]></category>

		<guid isPermaLink="false">http://www.ahmetkakici.com/?p=74</guid>
		<description><![CDATA[Yaklaşık 5-6 yıldır iyi kötü birşeyler yazıyorum. Bu süre zarfı içinde birçok program, editör, derleyici kullandım ve artık neredeyse kullandığım her dil için belirli başlı programlarda karar kıldım. İlk defa HTML ve PHP yazmaya başladığımda NotePad kullanıyordum şimdilerde ise yelpaze oldukça genişledi ve haliyle kalite de arttı. Yazının devamında kullandığım programlama dilleri ve bu dillere [...]]]></description>
			<content:encoded><![CDATA[<p>Yaklaşık 5-6 yıldır iyi kötü birşeyler yazıyorum. Bu süre zarfı içinde birçok program, editör, derleyici kullandım ve artık neredeyse kullandığım her dil için belirli başlı programlarda karar kıldım.</p>
<p>İlk defa HTML ve PHP yazmaya başladığımda NotePad kullanıyordum şimdilerde ise yelpaze oldukça genişledi ve haliyle kalite de arttı. Yazının devamında kullandığım programlama dilleri ve bu dillere ait editörler/derleyicileri sıraladım. Umarım biraz da olsa fikir sahibi olmanıza yardımcı olurum. Eğer önerileriniz varsa lütfen yorum yapmaktan çekinmeyin, keşfedilmeyi bekleyen programlara da şans verelim :)</p>
<p><span id="more-74"></span></p>
<p><strong>HTML (CSS/JS)</strong></p>
<p>HTML yazmaya başladığımda ki bu kod yazma sürecimin başlangıcına denk geliyor, elimde not defterinden başka bir alternatif yoktu. Zaten o sıralarda 33.6k dial-up bağlantı kullandığımdan bir program bilsem/bulsam bile indirmem eziyet olacaktı. Uzun bir süre not defteri ile devam ettikten sonra FrontPage&#8217;i bulmuştum. İşleri çok kolaylaştırmasına rağmen arka planda olan işlerden haberdar olmamak ve neyi nasıl yaptığımı bilmeyişim bu programdan soğumama sebep oldu. Bir dili öğrenme aşamasında bu tip programların kullanılması bence pek doğru değil.</p>
<p>Daha sonra aşağıda bir çok dil için de kullandığımı belirteceğim NotePad++ kullanmaya başladım. Genelde pek fazla tasarım ile uğraşmadığımdan dolayı HTML yazma işine de girmem. Eğer ufak tefek düzenleme işleri dışında büyük bir iş ile uğraşacaksam Visual Studio&#8217;ya geçiş yaparım. VS 2008&#8242;in <strong><a href="https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=10826&amp;wa=wsignin1.0" target="_blank">Hotfix</a></strong>&#8216;i çıkmadan önce dizayn arayüzü gerçekten yavaştı ama şimdi nispeten daha hızlı ve iş görebilecek seviyede.</p>
<p>Sonuç olarak HTML yazarken işin büyüklüğüne göre NotePad++ veya VS2008 kullanıyorum</p>
<p><strong>PHP</strong></p>
<p>Bu dil ile tanıştığım zamanlarda da not defterinden başka bir alternatifim yoktu. Daha sonra PHP Designer, PHPed gibi programlar kullandım. Ancak en hızlı ve efektif kullanıma yine NotePad++ ile eriştim. Geçen sene ilk defa büyük ve ciddi bir projeye başladığımda ise Zend Development Environment kullanmayı denedim. Gerçekten denemeye değer bir program. PHP&#8217;nin yaratıcılarından olan Zend firması tarafından çıkarılması destek ve güncellik konusunda herhangi bir kaygınızın oluşmaması için yeterli olur.</p>
<p>NotePad++ bir çok dili desteklediğinden dolayı her dilin en ince ayrıntısına kadar destek veremiyor. Ancak ZDE bu konuda PHP için oldukça kaliteli bir program. Eğer büyük bir proje ile uğraşıyorsanız ZDE&#8217;yi denemenizi tavsiye ederim. Ufak çaplı işler peşindeyseniz NotePad++ hızı ile en sadık editörünüz olacaktır.</p>
<p><strong>JAVA</strong></p>
<p>Java (hala javascript ile karıştıran var mı ?) ile üniversiteye gittikten sonra tanıştım ve çevremdeki arkadaşlarım ve öğretim görevlileri sayesinde az çok ufkum açılmıştı. En azından not defteri ile işe başlamayacağımı biliyordum :).</p>
<p>Derste örnekleri işlerken JCreator kullanılıyordu ve gözüme gayet güzel bir program gibi göründü. Hemen gidip JCreator&#8217;ı denemeye başladım. Olabilecek en temel Java editörü olduğunu çok daha sonradan ve acı bir tecrübe ile öğrendim. Java ile Tr&lt;-&gt;İng sözlük programı yazmaya başladığımda programın ana işlevi arama işlevini bitirmemin ardından tam program bitti edasıyla rahatlamışken arayüz yapmadığımı hatırladım. Konsol üzerinden çalışan bir sözlüğü kim kullanır ki? Arayüz tasarlamaya başladığımda ise programın ana işlevinden çok arayüzle uğraştığımı farkettim. Sürükle bırak gibi bir özelliği olmadığından ve Java&#8217;nın layout özelliklerinde yeni olmamdan dolayı epey zaman harcadım ve JCreator ile aram bozuldu.</p>
<p>JCreator sonrasında Eclipse ile tanıştım. Eklenti özelliği gerçekten mükemmel görünüyordu. Ancak eklentilerin bağımlılıkları baş ağrıtıyordu. Yeni çıkan bir eklenti yüklediğimde bağımlı olduğu eklentilerin de düzenlenmesi gibi sorunlardan (acemiliğim) dolayı sürükle bırak tipi bir eklentiyi kuramadım ve NetBeans&#8217;e geçiş yaptım.</p>
<p>Evet NetBeans java konusunda aradığım yegane programdır. Java ile yazılmış olmasından dolayı biraz yavaş çalışmasına ve biraz fazla bellek tüketmesine rağmen kullandığım en iyi editördür. Kod tamamlama özelliğinin yanı sıra değişken tamamlama özelliği de mevcut. Bir fonksiyonun prototipinde alacağı veri tipini belirttikten sonra o fonkisyonu çağıracağınız zaman yazabileceğiniz değişkeni tipine göre tahmin edip tamamlaması çok kullanışlı bir özellik.</p>
<p><strong>C/C++/C#</strong></p>
<p>Bilgisayar mühendisliği birinci sınıfta okuyorsunuz ve bir gün o çok korktuğunuz programlama dili C ile karşılaşıyorsunuz. Turbo C denilen mavi bir ekranda (mavi ekran zaten bir kabus :] ) birşeyler yazıldığını görüyorsunuz. Evet işte korkutucu C maceram böyle başladı, dili kavrama konusunda bir sorunum olmasa da (php tabanımdan dolayı) editör gözümü korkutmuştu. Turbo C&#8217;yi bir kere bile kullanmadan dönemi bitirdim ve o dönem boyunca herşeyi defterime yazdım :)</p>
<p>Daha sonra C++ ile tanıştığımızda Borland C++ Builder ile haşır neşir olduk. İlk defa sürükle bırak tarzında bir editör kullanmanın verdiği zevk ile BCB&#8217;ye tutulmuştum. Yazdığım şeylerin arkaplanında ne olduğunu bilmeden uzun süre BCB ile birlikteliğim devam etti. Daha sonraları derinlere indikçe az buz birşeyler öğrendim ve sürükle bırak yapmama rağmen arka planda olan işlerin farkına vardım. Ancak bir gün Visual Studio diye bir program ile tanıştım ve BCB&#8217;yi bir daha kurmamak üzere sildim.</p>
<p>Visual Studio&#8217;dan sonra C/C++/C# yazarken herhangi bir alternatifi göz önüne almadım bile. Halen daha kullanmaya devam ediyorum. Sadece küçük düzenlemeler için sadık dostum NotePad++&#8217;ı kullanıyorum.</p>
<p><strong>Prolog</strong></p>
<p>Öğrendiğim en ilginç dillerden biri olan prolog için adını bile hatırlamadığım editörleri deneyip bıraktım. Sonunda ise kullanımı eziyet verse de TurboProlog&#8217;a döndüm. Ancak kodlarımı halen daha NotePad++ ile yazıp derleme işlemini Turbo Prolog ile yapıyorum.</p>
<p><strong>Assembly</strong></p>
<p>Assembly yazarken de kullandığım en pratik program yine NotePad++. Derleme ve trace aşamasında MPLab&#8217;dan yararlansak da NotePad++ bu işte de sadık programım oldu. Ancak şunu belirteyim ki Assembly ile yazdığım çok az program var. Odtü robot yarışlarında ve mikroişlemciler ödevim dışında assembly yazdığımı hatırlamıyorum :)</p>
<p>Özet olarak en iyi editörüm hiç kuşkusuz NotePad++ hele stil dosyasını değiştirip arka planı siyah yaptıktan sonra gözleri de yormadan rahatça saatlerinizi ona bakarak geçirebilirsiniz :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ahmetkakici.com/yazilim/kod-yazarken/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

