Açıortay (Geogebra)

Bu animasyonda açıortaylarla oynamaya karar verdim. Yani verilen bir EAF açısını iki eşit açıya bölen AD doğrusunu çizdirdim. Daha sonra bu açıortay üzerinde bir D noktası aldım ve bu noktadan açının kolları üzerine düşen dikey DF ve DE doğrularını çizdirdim. Ardından geogebra’ya DE ve DF doğru parçalarının uzunluğunu ölçtürdüm. Ardından da bu D noktasını bir kaydırma bileşeniyle hareket ettirdim. Her yeni D noktası için geogebra DE ve DF uzunluklarını ölçüyor ve bu uzunluklar hep birbirine eşit oluyor. Bu deneyin hedefi de bunu göstermekti.

Bunu geometrik olarak görmek de kolay. ADE ve ADF diküçgenleri birbirine eşit olduklarından bu diker doğru parçalarının da uzunlukları birbirine eşit olmalıdır.

Komşu bütünler açılar

Noel tatilinde Geogebra ile oynamaya devam ettim. Bir şeyi öğrenirken görsel ya da deneysel yaklaşım benim sıkça kullandığım bir yöntemdir. Bana uygun olması başkasına da uygun olacak demek değil ama. Bazı insanlar soyut kavramlarla çok rahat çalışırken de deneyler de çok başarısız olabiliyor. Bu yazıdaki animasyonda geometrideki çok temel bir konuyu görsel bir hale getirip bu görselliğin gerçekten işe yarayıp yaramadığına da bu deneyle bir bakmak istiyorum.

Bu basit animasyonda bütünler açılara bakacağım. Aslında geometrik bir konuyu görsel hale getirmek ne kadar gerekli ya da avantaj sağlar sorusu da sorulabilir öncelikle. Geometri zaten oldukça görsel bir alan değil mi? Elbette öyle ama geogebra ile çok kısa sürede çok fazla deney yapmak mümkün. Bu deneylerde belki dikkatimizi çekecek sonuçlar ya da davranışlar görebiliriz.

Animasyonda açı isimli kaydırma bileşenini kaydırdığımızda doğru C noktası etrafında o açı kadar döndürülüyor ve C noktası etrafında \(\alpha \) ve \(\beta \) açıları oluşuyor. Bu açıların büyüklükleri geogebra tarafından “ölçülüyor”. Aslında hesaplanıyor tabii ki ama bu animasyonda geogebranın rolü bu deneyde bizim iletki ile yapacağımız ölçüm işini yapmak olacak. Bu sayede deneyler hızlanacak.

Animasyona bir de \(\delta = \alpha + \beta \) hesaplamasini ekledim. Bu da bu deneyde aslında dikkatimizi çekmesi gereken özellik. Açı değerini değiştirdikçe bu toplamın değişmediğini görmemiz lazım. Bu özellik ayrıca bütünler açı kavramının da kendisi oluyor.

“Eğer birbirinin bütünleri olan iki açı komşu ise (yani köşeleri ve bir kolları ortak) ortak olmayan kolları bir doğrudur” (wikipedia)

Buraya kadar her şey normal gözüküyor ama ufak bir iki nokta daha var. Örneğin geogebra’nın bu açıları ölçmesine güvenebilir miyiz? Tabii ki yukarıda da dediğim gibi geogebra bu açıları ölçmüyor, hesaplıyor. Öğrenme aşamasındaki bir kişi için bu yeterince güvenilir olacak mı acaba? Peki aynı şekilde bu deneyleri kağıt, kalem ve iletkiyle yapsaydık bu sefer iletkiye güvenecek miydik? O da çok duyarlı ölçümler yapamıyor. Zaten çizdiğimiz doğrular da matematikteki doğru tanımına uyan nesneler değil.

Aslında bu soruyu soyut bir şekilde işlemek büyük ihtimalle çok daha basit bir öğrenme yöntemi ama yine de herkes aynı şekilde aynı kolaylıkla öğrenecek diye bir şart yok. Belki de bu durumda deneysel ve güven tabanlı öğrenmeyi yeğleyecek insanlar vardır. Geogebra bu tür insanlar için oldukça iyi bir araç.

Geogebra

Bu programdan sanırım ilk geçen yıl haberdar olmuştum. Bazı bilmecelerin çözümündeki şekilleri çizmek için kullanmıştım yanlış hatırlamıyorsam. Geçenlerde youtube’da ODTÜ’den Cem Tezer’in çok güzel geometri dersi videolarının birinde bu programdan bahsedince bir daha bakayım dedim. www.geogebra.org adresinden ulaşılıp bedava kullanabilen bir program. Ayrıca programı yüklemeye de gerek yok, tarayıcının içinde doğrudan çalışıyor.

Bu programın sevdiğim tarafı şu oldu. Matematiğin bazı alanlarını çok güzel görselleştiriyor. İyi de matematiği görselleştiren programlar zaten vardı diyebilirsiniz. Bunun farkı nerede peki?

Bunun farkı programda temel nesnelerin basit ilişkiler şeklinde tanımlanabilmesi ve daha sonra şekil üzerinde bu nesneleri hareket ettirirken programın nesnelerin aralarındaki ilişkileri korumaya devam etmesi. Örneğin, tanımlanmış bir fonksiyon üzerinde bir A noktası tanımladığımız zaman program bu noktanın o fonksiyon üzerinde olduğunu biliyor artık. Böylece o noktayı hareket ettirdiğimizde nokta her zaman o fonksiyon üzerinde kalıyor. Bir adım daha ileri gidip o noktadan geçen ve o fonksiyona teğet bir doğru çizdiğimizde program bu teğetlik özelliğini de hatırlıyor ve noktanın her yeni konumu için o konumdaki teğeti çiziyor.

Bu animasyonda yukarıda bahsettiğim örneği programladım. Programlamak da sayılmaz aslında, bir kaç komutla yapılan bir iş. “a” isimli kaydırma bileşeniyle P noktasını fonksiyon üzerinde kaydırıyorum, yani P noktasının x koordinatını a bileşeninden y koordinatını da daha önce tanımladığım fonksiyondan alıyorum. Noktanın her konumu için o noktadaki teğet de çiziliyor. Ayrıca ekranın sağında bu teğetin fonksiyonu ve eğimi de gösteriliyor. Eğimi takip edersek minimum ve maksimum noktalarda değerinin 0 olduğunu, ne zaman arttığını, ne zaman azaldığını görebiliyoruz. Bu şekilde belki orta öğretimde türevi ve minimum maximum noktaları hesapları öğrenirken görsel bir destek olarak kullanılabilir. Sizi bilmem ama ben bununla arada sırada oynamayı düşünüyorum. Ümit henüz buna çok ilgi göstermese de elbet işe yarayacağı günlerin geleceğine inanıyorum.

Knuth-Morris-Pratt algoritması

Bu algoritma failure function yazısında oluşturduğumuz tabloyu kullanarak aradığımız metni uyumsuzluğun olduğu konuma göre değişik miktarlarda kaydırmaktadır. Bu şekilde aranan metni her adımda bir karakter kaydırma algoritmasına göre bir iyileştirme elde edeceğiz.

Aşağıdaki linkle animasyon sayfasına ulaşabilirsiniz. Sayfa yüklendiği zaman aranan metin için daha önceki yazıda tanımlanan tabloyu hesaplayacak. Ardından ana metni ve aranan metni gösterip uyumlu karakterleri yeşil renkle, uyumsuz olan ilk karakteri de kırmızı ile gösterecek. Ondan sonra uyumlu ortak metin uzunluğundan tabloda seçilen sütunu yeşi ile gösterip oradan kaydırma miktarını okuyacak. Aranan metin bu miktar kadar kaydırıldıktan sonra aynı işlemleri tekrarlıyor. Animasyon aranan metin bulunana kadar devam ediyor.

Animasyon

Şapka yerine sayılar

10 tutuklu zindanda ertesi gün idam edilmeyi beklerken, kral onlara bir şans daha vermek istemiş.

İdamdan önce her birinin alnına 0’dan 9’a kadar rastgele bir rakam yazılacak. Herkes kendi rakamı hariç diğer bütün rakamları görebilecek. Kimse birbiriyle konuşamayacak ve ardından her birine teker teker alnındaki rakamın kaç olduğu sorulacak. Eğer bir kişi bile kendi rakamını doğru tahmin ederse hepsi kurtulacak, aksi durumda hepsi idam edilecek. Ayrıca kimse de diğerlerinin tahminlerini duyamayacak.

Yarına kadar bir strateji kararlaştırabilirler. Hangi strateji ile kurtulabilirler?

Çözüm

Bir başka doktor muayenesi

Bu doktor maceralarım beni her zaman güldürmeyi başarıyor. Geçen hafta ürolog randevum vardı. Randevu zamanı geldiğinde muayenehaneye gelmiştim ama bencen önce iki kişi daha vardı. Beklemeye başladım. On dakika sonra sıra bana geldi. İçeri girdim ve hemşireye randevum olduğunu söyledim. Bana idrar tahlili için bir kap verdi. Tuvalete gittim. Tuvalet doluydu. Ben beklerken başka bir hasta geldi ve tuvaletin dolu olduğunu görünce kadınlar tuvaletine girdi. Birazdan erkekler tuvaleti boşaldı. İçeri girdim, kabı elime aldım ve işemeye başladım. Yani başlamak istedim. Birkaç damladan sonrası gelmedi. Bir beş on dakika daha boğuştum ama olmadı. Eser miktarda idrarla kabı geri götürmek de istemedim. Maazallah sırf bu örnek için özel vitrin yaptırıp üzerinde adımın yazılı olduğu bu kabı herkese sergileyebilirlerdi. Kabı tuvaletle laboratuar arasındaki kapağı açıp aradaki bölmeye koydum ve çıktım. Bu sırada hemşire de beni arıyormuş. Kısaca, kabı hemen hemen boş bir şekilde ara bölmeye koyduğumu söyledim ve o da “sorun değil” diyerek beni doktorun yanına gönderdi.

Doktor önce kan tahlili sonuçlarını anlattı. Değerler yine biraz yüksekmiş ama sorun değilmiş. Geçen seneki işlemlerin aynısını yaparız diyerek Ocak ayı için randevu verdi. Ardından bir şikayetimin olup olmadığını sordu. Ben de önce yok dedim ama sonra şikayetsiz gidersem doktora ayıp olur diye işerken hafif bir yanma var dedim. O da “idrar tahlili verdiniz nasıl olsa, orada bakarız” dedi. Ben de durumun düşündüğü gibi olmadığını anlattım. “Hallederiz” dedi. Sonra muayeneye geçti. Şimdi muayenenin detaylarına girmeyeceğim. Doktor yeterince girdi zaten. Ardından “her şey yolunda, Ocak’ta görüşürüz” dedi. “İdrar tahlili ne olacak?” diye sordum. O da “muayene ettim, sorun yok” dedi. İçimden “vay be, gavur ultrasonla yanmayı bile kontrol edebiliyor. Bir de idrar örneği verebilseydim neler neler bulurlardı acaba?” diyerek odadan çıktım.

Isenachweiher

Hafta sonu çocuklarla yakınlardaki bir göle gittik. Isenach adlı akarsunun döküldüğü Isenachweiher. Tabii ki bu mevsimde çok bir şey görmeyi beklemiyordum. Fotoğraf makinemin pilini de bu nedenle şarj etmemiştim. Aslında bunun ne kadar kötü bir fikir olduğunu gidince anladım.

Yağmur sonrası bir dönem olduğu için çevre patikalar mantarlar açısından çok zengindi. Gölün çevresinde kısa bir tur sonunda bir sürü mantar türü görebildim. Çocuklar sıkılmasa gezintiyi daha da uzatabilirdim ama zaten yeterli şarjım da yoktu.

Hazır göle gelmişken iki kavanoz su örneği aldım. Gölün çevresindeki aşırı yüksek ağaçlar yüzünden gölde pek su bitkisi yoktu ama belki örneklerde bir şeyler bulabilirim diye ümit etmiştim ve düşündüğümden iyi şeyler de çıktı.

Türlerin ne olduğunu henüz bilmiyorum ama şimdilik şu diatomları bulabildim:

https://www.instagram.com/p/CGmNZEspxZV/
https://www.instagram.com/p/CGmW7jypJVm/

Ayrıca gölde tipik ördek aileleri de vardı. Hatta bir balıkçıl da kısa süreli bir iniş de yaptı ama hemen uzaklaştı sonra. Anlaşılan gölde balık da varmış.

Kısa bir turdan sonra yine evin yolunu tuttuk.

Failure Function

Bu seferki algoritma aslında yine başka bir algoritmada kullanılan bir parça olacak. Basit metin arama algoritmasında bulmak istediğimiz metin parçasını ana metin üzerinde her adımda bir karakter kaydırarak üst üste gelen harflerin aynı olup olmadığına bakıyorduk. Bu yazıda bakacağımız algoritma her adımda bir karakter kaydırma sorununa bir çözüm bulmaya çalışacak.

Aradığımız metin parçasındaki harflerin özelliklerini kullanarak bazen birden fazla karakter kaydırma imkanını elde edebiliriz. Yani karakterleri karşılaştırırken fark olan ilk konuma kadar olan karakterlere göre birer karakter kaydırmanın bu başlangıç kısmında bir eşitlik yaratamayacağından emin olabilirsek bundan faydalanarak kaydırma adımını hızlandırabiliriz. Hedefimiz şu: Arama metnindeki ilk uyumsuzluğun konumuna göre kaç adım sıçrama yapmamız gerektiğini söyleyen bir tablo bulmak istiyoruz. Dolayısıyla normal arama işleminde yine karakterleri tek tek kontrol edeceğiz ama ilk farkta bu tablo bize bir sonraki arama için ne kadar sıçrama yapmamız gerektiğini (şansımız iyi giderse birden fazla) söyleyecek.

Wikipediadan aldığım bazı örnekleri vereyim şimdi.

             1         2  
m: 01234567890123456789012
S: ABC ABCDAB ABCDABCDABDE
W: ABCDABD
i: 0123456

Burada ana metin S ile aradığımız metin de W ile gösterilmekte. Burada i = 3 indeksli karakter ilk uyumsuzluğun olduğu yer. Şimdi W ile gösterilen karakter dizisini birer birer sağa kaydıracağım ama bu sırada S karakter dizisinde algoritmanın henüz görmediği yerlere X koyacağım. Bu X koyulu yerlere karşılık gelecek W karakterlerini de kullanmaya gerek olmayacak çünkü bu karakterleri henüz görmediğimizden buralarda eşitlik olup olmadığını bilmiyoruz.

             1         2  
m: 01234567890123456789012
S: ABCXXXXXXXXXXXXXXXXXXXX
W:  ABC
i: 0123456

İlk kaydırmadan sonra ilk konumda (i = 1) bir eşitsizlik var. Daha bakmaya gerek yok, bir kere daha kaydıralım.

             1         2  
m: 01234567890123456789012
S: ABCXXXXXXXXXXXXXXXXXXXX
W:   ABC
i: 0123456

Yine W parçasının başı yukarıdaki S dizisinin bilinen kısmının sonuyla uyuşmadı. Demek ki bu diziyi iki adım kaydırmak da işe yaramayacak. O zaman aramaya 3 adım kaydırarak devam etmek lazım.

Bu örnekten sonra iki şeye dikkat çekmek istiyorum.

  1. Aradığımız şey aslında W dizisinin başındaki bir dizinin (önek) yine W dizisinin sonundaki bir diziyle (sonek) uyuşup uyuşmadığı. İlk X nerede olursa olsun oraya kadar S dizisiyle yine aynı konuma kadarki W dizileri aynı olduğundan yukarıdaki fikri kullanabiliriz.
  2. İlk bakışta yine her adımda W dizisinin bir önekini bir kaydırıp kontrol ediyoruz gibi görünüyor ve böylece aramada yine her seferinde W dizisini bir karakter kaydırıp basit arama algoritmasına döneceğiz gibi geliyor ama aslında bunu sadece örnek olarak verdim. İleride bu tabloyu aramadan önce sadece arama metnini kullanarak bir kereliğine oluşturabileceğimizi göreceğiz.

Örnek:

             1         2  
m: 01234567890123456789012
S: ABC ABCDAB ABCDABCDABDE
W:            ABCDABD
i:            0123456

Burada ilk uyumsuzluk i = 6 konumunda oluşmuş. O zaman ana metinle aranan metin arasında i = 5 noktasına göre tam uyum vardır. O zaman aranan metnin o noktasına kadarki önekiyle ilgileneceğiz.

             1         2  
m: 01234567890123456789012
S: ABC ABCDAB ABCDABXXXXXX
W:            ABCDAB
i:            012345

Şimdi aranan metni birer kaydırdığımızda kendi önekiyle yine kendi soneki arasındaki uyumlara bakalım.

             1         2  
m: 01234567890123456789012
S: ABC ABCDAB ABCDABXXXXXX
W:             ABCDAB
i:            012345

i = 0 noktasında uyumsuzluk var. Yine kaydırmamız lazım.

             1         2  
m: 01234567890123456789012
S: ABC ABCDAB ABCDABXXXXXX
W:              ABCDAB
i:            012345

Uyumsuzluk devam ediyor. Yine kaydıracağız.

             1         2  
m: 01234567890123456789012
S: ABC ABCDAB ABCDABXXXXXX
W:               ABCDAB
i:            012345

Hala uyum bulunamadı. Kaydırmaya devam ediyoruz.

             1         2  
m: 01234567890123456789012
S: ABC ABCDAB ABCDABXXXXXX
W:                ABCDAB
i:            012345

Burada sonunda aranan W metninin iki karakterlik öneki ile yine W nin (tabii ki 6 karakterlik kısmı için, bu uzunluk en baştaki ilk uyumsuz nokta ile belirleniyor) iki karakterlik soneki arasında bir uyum bulundu. Demek ki tablomuzda ilk uyumsuzluk 6. konumda bulunursa 4. konuma kadar kaydırılmalı diye bir kayıt bulunmalı. Algoritma bu uyumsuzlukla karşılaştığında birer birer kaydırmak yerine hemen 4 karakter kaydırarak aradaki kontrolleri gönül rahatluğıyla atlayabilir.

Burada bir gözlemden daha bahsedeyim. Sağa doğru birer birer kaydırırken ilk uyumlu önnek, sonek çiftini bulduğumuzda kaydırmayı kesmemiz lazım. Yani en uyumlu olan en uzun önek, sonek çiftini arıyoruz. Bunun nedeni de aslında kolayca anlaşılabilir. Aranan metni kaydırdıkça bu metnin en son kısmı hep X ile gösterdiğimiz bölüme kayıyor, yani bu bölümde de uyumun devam etme hatta aranan metnin tamamının bulunma şansı var. Dolayısıyla bulunan ilk önek, sonek uyumunda durulmalı ki bu ihtimal gözden kaçırılmadan kontrol edilebilmeli.

Bir küçük nokta daha var ama onu zaten farketmişsinizdir. Önek ve soneklerin uyumuna bir kere kaydırdıktan sonra bakıyoruz. Kaydırmadan bakarsak her zaman uyumlu olurlar ve bu durumda algoritmamız kaydırmaya gerek yok diye saçma bir düşünceye kapılabilir.

Aşağıdaki linkten animasyon sayfasına girerek bu tablonun başta ana metne ihtiyaç duymadan nasıl hazırlandığını görebilirsiniz. Yani tabloyu arama algoritmasının en başında üretebiliriz ve sonra ana metinle beraber kolaylıkla kullanabiliriz. Bu kullanımı da başka bir yazı ve animasyonda göstereceğim.

Tablonun üzerindeki kısım önce indeks listesiyle başlıyor. İkinci satır ana metnin o ana kadar uyum sağlanmış kısmını gösteriyor. Bu farazi bir ana metin tabii ki, bütün işlemi aslında aranan metinde yapmama rağmen bu ana metin kısmını da göstermek istedim. Aranan metindeki uyumsuzluğun olduğu ilk nokta dolaylı olarak da ana metni o noktaya kadar belirlediği böylece daha kolay anlaşılır belki. Üçüncü satır aranan metnin tamamını gösteriyor. Son satır ise simulasyon sırasında kaydırılan kısmı gösteriyor. Yukarıdaki örneklerdeki W kısmı (ana metinle tam uyum sağlayan kısmı tabii ki) yani.

Tablonun başlık satırı indekslerden oluşuyor, yani yukarıdaki örneklerdeki i satırı. İkinci satır önek ve soneklerdeki en uzun uyumlu karakter dizisini gösteriyor. Son satır da algoritmanın indeks numaralı pozisyondaki uyumsuzluk için arama metnini kaç karakter kaydetmesi gerektiğini gösteriyor. Dikkat ederseniz index – maksimum uzunluk = kaydırma miktarı gibi bir eşitlik de var.

Simulasyon

Doktor randevularında bu hafta

Bu yıl başında yaptırdığım biyopsilerden sonra üroloğa kontrole gittiğimde bana şunu dediğinden eminim: “Sonuçlar iyi. Kanser değil. Bir sonraki kontrolü ekimde yaparız. Aralıkta da ameliyat için randevu alın, geçen sefer yapılan işlemin aynısı yapılacak.”

Yani ben böyle anladım. Sonuçta atipik hücrelere rastlanıldığı için her yıl aynı kontrollerin yapılması da bana hiç anormal gelmedi. Doktor o muayenede bana ameliyat için alt bir kağıt da vermişti. Açıkçası pek dikkat etmedim kağıda, üzerinde anlaşılmaz bir iki kelime ve daha da anlaşılmaz bir imzadan başka bir şey yoktu. Muayenehanedeki hemşirelere bunu gösterdiğimde o kağıdı benden aldılar ve alt kattan ameliyat için randevu almamı söylediler. Hatta geç kalmamamı bile söylediler. Bu bana ilginç gelmişti, çünkü geçen sene randevuyu iki hafta kala çok rahat almıştım. Bu senenin tek özelliği ise korona yılı olmasıydı. Belki daha az ameliyat yapacaklardır diye düşünüp nedenini sormadım.

Yazın bu randevu sorunlarıyla pek ilgilenmedim. Eylül geldiğinde artık şu kontrol muayenesi için randevu alayım bari dedim ama telefonla muayenehaneye ulaşmak bir türlü mümkün olmadı. Sürekli meşgul. O zaman kendime sormaya başladım. Neden muayenehaneler kendilerinde kayıtlı hastalar için online randevu sistemi kurmuyorlar acaba? Telefonun tamamen kalkmasına da gerek yok, bazı hastalar telefonda önce bilgi almak isteyebilir.

Sonunda senelik iznimde muayenehaneye gittim. Haftaya bir randevu aldım. Sonra alt kata inip ameliyat için randevu alayım dedim. Danışmadaki kadın beni dinledi ve sonra bana garipçe baktı ve “randevuyu doktordan alacaksınız” dedi. Bana doktorun altı ay önce böyle söylediğini anlatmama rağmen kadın “biz anestezistiz, ameliyatı doktorunuz yapacak. Randevuyu ondan almalısınız” dedi yine. Açıklama bu açıdan bakınca mantıklı geldi ama peki bana aylar önce muayenehanede neden aksini söylemişlerdi? Muayenehaneye çıkıp bir de oradakilere sorayım dedim. Durumu anlattım ve kayıtlara baktılar. “Sadece kontrol gözüküyor sizde, doktor kontrolde ameliyat gerekip gerekmediğini söyler o zaman randevu alabilirsiniz” dediler. Son geldiğimde aynı insanlar çok farklı şeyler demişlerdi ama. Yoksa ben mi her şeyi yanlış hatırlıyordum? Ben bu düşüncelere dalmışken hemşirenin hayaş meyal “bir hafta filan önceden kan vereceksiniz. Değerlere göre doktor karar verir” dediğini duydum. Yeniden düşünmeye başladım. Bir hafta önce mi? Zaten randevum haftaya, yani bu hafta kan vermem lazım. On dakika önce diğer hemşire bana randevumla beraber bir kağıt daha vermişti, üzerinde kan verme saatleri yazıyordu. O sırada bakmamıştım ama randevu saatimde kan verme şansım olmayabilir bu durumda. Peki o hemşire neden bana bir hafta önce kan vermem gerektiğini söylemedi? Neyse daha fazla bir şeyleri yanlış anlamadan eve gideyim en iyisi.

Dün kan vermeye gittim. Sıra yoktu. Hemen beni içeri aldılar. Kan örneği alındı ve hemşire tamponu yapıştırdı ve buraya bastırın dedi. Diğer hemşire de kanı alan hemşireye “neden onu hemen dışarı atıyorsun ki?” diye sordu. Tipik bir yanlış anlama olmuştu. Kanı alan hemşire de “dışarı atmadım, tamponu bastırmasını söyledim” dedi. Artık benim kafam karışmıştı. İşim bitmişti ama gitmeli miydim kalmalı mıydım? Dört metrekarelik odada oturup bekledim ben de. Beş dakika sonra başka bir hemşire geldi ve “sizin işiniz bitmiş miydi?” diye sordu. İçimden “bilmem” dışımdan ise “evet” dedim. Giyinip kimseye bir şey sormadan çıktım eve gittim. Bakalım haftaya bir şey unutmuş muyum unutmamış mıyım öğrenirim heralde.

Tatil ve programlama dilleri

İki haftalık iznimde birkaç güncel programlama diliyle ilgilenmek istedim. Bu iş için öncelikle şirkette de kullandığım Eclipse program geliştirme ortamını kullanmayı düşündüm. Ne de olsa değişik dillerde programlama yapmak için tasarlanmış bir sistem. Marketplace adı verilen eklenti indirilen yerden doğru eklentileri indirdim. Go dili için Ubuntu altında epey işlem yapmam gerekti ama bunu nedense Eclipse altında çalıştırmayı başaramadım. Bir sürü ayar yapmam gerekti ama projeyi kurduğumda nedense programları acayip yerlerde çalıştırmaya kalktı. Ardından Go için başka bir program geliştirme ortamı aradım ve LiteIDE diye bir programı indirdim ve orada Go eklentisini yükledim ve hemen çalıştı. Büyük projeleri şimdilik düşünmediğim için bana yeterli geldi. Skor eclipse için 0-1 oldu böylece.

Ardından Rust dilini denedim. Yine eclipse için eklentisini yükledim. Bu daha sorunsuzdu ama sıra deneme programını çalıştırmaya geldiğinden yine bazı ayarları yapmam gerektiğini fark ettim ama bunu da beceremedim. Bunun üzerine bunu çok daha önceleri yüklediğim intelliJ Idea programının community versiyonunda deneyeyim dedim. Eklentiyi orada yükledim ve deneme programı hemen çalıştı. Böylece skor Eclipse 0 – Diğerleri 2 oldu.

Üçüncü adayım C++ diliydi. Bunu da 10 yıldır C++ programı yazmadığım için don standardlarda neler olduğunu öğrenmek için istiyordum. Bunun eclipse altında çalıştığından eminim çünkü daha önce de kullanmıştım. Nedense Java için kullandığım eclipse programına C++ eklentisi bulamadım. Bunun üzerine C++ için olan eclipse versiyonunu indirdim ve kurdum. Hemen C++ denemelerine başlayabildim. Sonunda Eclipse bir gol atmayı başarmıştı.

Son olarak da Scala dilini denemek istedim. Bu dil Java platformunda çalıştığı için eclipse sorun olmayacaktı. Eklentiyi ekledim ve deneme programını yazdım ama projeyi bir türlü çalıştıramadım. Bunun üzerine aynı denemeyi intelliJ Idea programında denedim. Eklentiyi yükledikten sonra deneme programı hiçbir ayar yapmaya gerek kalmadan çalıştı. Sonuç Eclipse 1 – Diğerleri 3 şeklindeydi.

Eclipse oldukça başarılı bir program ama benim beklentim de yüksekti. Mesela eklentiyi yükledikten sonra minimum ayarlama yapmak bunlardan biriydi. Bu diller bilgisayardan anlamayan birinin ilk programlama dili olabilir neticede ve bu ortamın böyle ihtimallere hazır olması lazım. Sonuçta intelliJ Idea bunu çok rahat başardı. IntelliJ Idea ile sadece Go dilini kullanamadım çünkü o eklenti sadece tam sürüm için vardı ama. Şimdilik ilgilendiğim diller için çözümler bulduğuma göre artık öğrenmeye başlayabilirim.