Programlama Dilleri Savaşı Paneli: C++, JAVA, C#

0
FZ
Geveze fazlamesai.net muhabiri FZ, araştırmacı gazeteciliğin gereklerini yerine getirmek için usanmadan, yılmadan çalışmaya devam ediyor ve Crea-World, Polaris Plaza tesislerinden bildiriyor...

Internet Teknolojileri Derneği tarafından Dr. Mustafa Akgül yönetiminde, 19 Mart 2002 günü, 14:00 - 17:00 saatleri arasında gerçekleştirilen "Programlama Dilleri Savaşı: C++, JAVA, C#" adlı panele katılım beklenenin epey üzerinde gerçekleşti. Galileo salonuna panel için gelen ve sayıları 60'ı geçen katılımcıyı ağırlayabilmek için dışarıdan sandalye servisi yapmak zorunda kalındı.
Panele Microsoft Türkiye'den Çiğdem Çimen, Sun Microsystems Türkiye'den Tansel Okay, Telenity'den Hadi Kahraman, Integral'den Haluk Bingöl ve NETRON Eğitim'den Oğuzhan Örde konuşmacı olarak katıldı.

Panel diller arası akademik bir tartışmadan çok, Microsoft ve Sun platformlarının reklamı ve bunlar etrafındaki tartışma doğrultusunda şekillendi. Microsoft'tan Çiğdem Hanım, C# dili ile birlikte .NET yazılım geliştirme platformunu, MSIL (Microsoft Intermediate Language) dilini ve CLR'yi (Common Language Runtime) tanıttı ve Visual Studio.NET reklamı yaptı. Buradan yola çıkarak değişik dillerin aynı projede bir arada kullanılabilmesinin kolaylığını ve avantajlarını vurgularken öte yandan platformlar arası iletişimin ve standartların önemini vurguladı. Sun Microsystems'ten Tansel Bey ise diller arası çalışmayı ya da spesifik bir platformu değil JAVA tabanlı platformlar arası yazılım geliştirmeyi önemsediklerini belirtti ve JAVA, J2EE gibi teknolojilerin, yavaş fakat demokratik, sağlam bir yapıda ilerlediklerini vurguladı. Çiğdem Hanım'ın buna cevabı ise C# ve CLR gibi önemli .NET bileşenlerinin ECMA tarafından standardize edildiğini, isteyen kişilerin bunları, spesifikasyonlara uymak kaydı ile istedikleri işletim sistemine uyarlayabileceklerini belirmek oldu. Linux üzerinde çalışan C# derleyicisi ve temel .NET sınıflarını içeren MONO projesini buna örnek gösteren Çiğdem Hanım, spesifikasyon olarak Microsoft'un da standartları gözettiğini belirtti.

Yeni programlama dillerinin ve platformlarının sadece kendi içlerinde kalmayıp aynı zamanda XML Web Servisleri bağlamında da birtakım paradigma değişikliklerine yol açacağı konusunda hem fikir olan konuşmacılar, özellikle paket program satış modelinin artık ölmeye yüz tuttuğunu, bu modelin hızla Internet üzerinden bilgi işlem servis satışı, servis aboneliği modeline doğru evrildiğini söylediler. Tansel Bey'in verdiği güzel bir örneği burada tekrar etmek gerekirse: Artık bir şirkete bir bordro programı satmak ve sonra da bordro hesaplamaları ile ilgili kurallar, oranlar değişti mi bu programı güncellemek diye bir şey kalmayacak. Yazılım geliştirme firması artık Internet üzerinden Bordro Servisi satacak, herhangi bir parametre ya da kural güncellemesi oldu mu bu gene web servisleri alt yapısı ile doğrudan ve otomatik olarak müşterinin bilgisayarında güncellenmiş hali ile çalışıyor olacak.

Telenity firmasından Hadi Bey, C++'ın kapsamlı ve alt yapıya yönelik sistemler söz konusu olduğunda yetkin bir dil olduğunu ancak en önemli gücünün aynı zamanda en büyük zayıflığı olduğunu, pointer aritmetiği kullanılarak ana hafıza yönetiminin bir noktada tıkanıp kaldığını belirtti. "Bir C/C++ programı belli bir karmaşıklık seviyesini geçti mi, ne kadar iyi programcı olursanız olun, ne kadar kaliteli debugging ve pointer sınır kontrol araçları kullanırsanız kullanın, RAM yönetiminde ve kontrolünde ipin ucu kaçıyor ve programınız beklenmedik şekillerde göçüyor ya da takılıp kalıyor," diyen Hadi Bey, JAVA dilinde bu problemi aştıklarını ancak nesneye yönelik programlama modeli yüzünden onbinlerce nesne ile boğuştuklarını ve bunun da performans problemlerine yol açabildiğini belirtti. Bu konu ile ilgili olarak söz alan Çiğdem Hanım, .NET ile uyumlu C# gibi dillerdeki STRUCT yapısı ile oluşturulan nesnelerin daha performanslı olduğunu belirtti. Deneyimli bir programcı olan Hadi Bey, karmaşık sistem programlama projelerinde ve platformlarındaki en önemli problemlerden birinin STANDART INTERFACE TANIMLAMALARI olduğunu ve programcıların bunlara çok dikkat etmesi gerektiğini söyledi. Daha sonra ise tümleşik yazılım geliştirme ortamlarına (IDE) değinen Hadi Bey, bunların yazılım geliştirme açısından programcıya pek çok kolaylık ve hız sunduğunu söyledi ancak arka planda bir sürü iş yaptıkları için, taşınabilir kod üretmede epey probleme yol açtıklarına da dikkat çekti.

Integral'den Haluk Bey ise esas savaşın çok büyük sistemler, Mainframe, Datacenter pazarında ve çok küçük sistemler yani cep telefonları, kişisel dijital yardımcı bilgisayarlar (PDA) pazarında olduğunu belirtti: "Orta ölçekte zaten Microsoft hakim ve burada ciddi anlamda bir savaş olduğunu söylemek güç, günümüzdeki esas savaş küçük cihazlara kimin teknolojisi girecek ve 10-20 işlemcili, terabaytlarca diskli sistemlerde en güçlü kim olacak sorularında yaşanıyor," diyen Hadi Bey Microsoft'un en büyük gücünün "ihtiyaçları hemen tespit et, buna en hızlı çözümü getir, reklamını yap ve piyasaya sun" taktiği olduğunu belirtip, söz konusu çözümlerin her zaman en iyi çözümler olmadığını ancak rakiplerine kıyasla çok daha çabuk geliştirip çok reklam yapmak sureti ile pazarda Microsoft'un yıllardır lider olduğunu vurguladı. Söz konusu dillerle ilgili Hadi Bey'in görüşünü paylaşan Haluk Bey, C/C++'ın çok güçlü ve probleme yol açabilir olduğunu belirtip JAVA'yı ve C#'i bu bakımdan daha iyi bulduğunu belirtti. Bu ikisinden hangisi sorusuna ise şu şekilde cevap verdi: "Eğer Microsoft tabanlı sistemlerde çalışıyorsanız ve orta-uzun vadede buna devam etmeyi planlıyorsanız en önemli yatırımınız C# olacaktır, yok eğer Microsoft dünyasının dışına çıkma ihtimaliniz var ise, platformlar arası çabucak taşınabilirlik, küçük cihazlara yönelik ciddi yazılım geliştirme gündemizde ise JAVA, J2EE, JAVA Micro Edition gibi platformlar en ciddi ve sağlam ilerleyen seçeneklerdir, bunu göz önünde bulundurun."

Panelin soru-cevap bölümünde söz alan Dr. Atilla Elçi'nin yorumları ise ilginçti. Bilgi işlem sektöründe son 20 yıldır imperatif (emir kipi modunda çalışan) dillerin hakim olduğunu ve bunların dezavantajlarının hiç ele alınmadığını belirten Elçi, C dilinin donanım mühendislerince geliştirildiğini ve Elektrik-Elektronik Fakültelerinde yetişen insanların gayretleri ve tutuculukları ile bu kadar yaygınlaşabildiğini vurguladıktan sonra bunun sebebini konuya Bilgisayar Bilimleri açısında yaklaşılmamasına bağladı. C ve ona benzer dillerin süreç içinde bu dezavantajları yansıttığını, C++ gibi hibrit bir dilin problemleri gidermek konusunda yeterince başarılı olamadığını söyleyen Elçi, gerçek verimliliğin donanımı ya da platformu değil daha soyut bir seviyeye çıkıp uygulamayı, çözüm geliştirmeyi vurgulayan dillerle geleceğini iddia etti.

Panel, Dr. Mustafa Akgül'ün kapanış konuşması ile son buldu. Integral'den Haluk Bey'in kanlı bir savaş talebine rağmen Programlama Dilleri Savaşında ölen ya da yaralanan olmadı, ufak tefek diplomatik gerginlikler yaşanmakla birlikte geçici ateşkes ilan edildi.

Görüşler

0
sundance
Heyyt be, muhabir dediğin işte böyle olur, eline diline sağlık FZ biladerim.
0
FZ
fazlamesai.net'in kalbimizde, gönlümüzde, hayatımızda, camiamızda çok özel bir yeri vardır ve bu yer zamanla sağlamlaşmakta, gelişmektedir.

Bu sitenin içerik bakımından en üst kalitede olması bence hepimizin hayrınadır.
0
anonim
Selamlar, henüz bir programlama dili bilmiyorum(VBS ve PHP yi saymazsak) ve olaya girmk istiyorum(çok klasik bi mevzu ama salak değilim ve hobi olarak değil ciddi olarak ilgileniyorum;)
geçenlerde bir C++ kitabı aldım fakat kitabın iç sayfalarında bu kitabı okuyabilmeniz için C biliyor olmanız gerekiyor diyince hayalkırıklığına uğradım. Şimdi o kitabı Java kitabı ile değiştirmeyi düşünüyorum. Peki Javadan C# a geçmek kolay mıdır? Yoksa tam tersi mi daha kolay olur?
0
anonim
benim daha iyi bir fikrim var
o kitabi ver C kitabi al

neden insanlar hic acaba c++ icin once c ogrenmem gerekmez mi demez
hemen atlarlar aha bu c++
baksana plus plus
demekki dahah ii
hemde daha fiyakali falan filan

halbuki bence c cok daha ii...
0
anonim
Hayir C++ ogrenmek icin C bilmek gerekmez. Bunun icin bir kitap onermemi isterseniz benim kitapligimda C++ How to Program isimli bir tane var. Web uzerinde de pek cok kaynak var. directory.google.com dan ulasabilirsiniz..
Ustelik C++ elbetteki daha iyidir. Sakin bana C ile de OOP yapilabilir demeyin. Ben istersem Assembler ile bile OOP yaparim o ayri mesele :^) Ama OOP yapacak olsaydim bunun icin tasarlanmis bir dil kullanirdim. Geleneksel C konsunda cok israrciysaniz en azindan Objective-C yi deneyin derim..
0
skoylu
C++, C'nin bir supersetidir. C ile 'this' mevzusunu tasarlayip C++ yaptilar. Pointer aritmetigini yazilimi yazandan alip, derleyiciye yuklediler. Hepsi bu. C++'Yi bir prepocessor kullanarak C ile derleyebilirsiniz. Uzatmadan, C++ ogrenince zaten C'de ogrenmis olursunuz.
Asil konu suradadir. C ve C++'yi anlatan bir dokuman 30 sayfayi gecmez. C icin sanirim toplam 8-10 tane komut var. Veri tiplerini filanda sayarsaniz C'nin (ve C++'nin contructor, overload vs. mevzulari ile) birlikte 40-50 baslik gecer elinize (sanirim %100 yanilma payi olsa, 100 baslik deyin siz). Iste C'yi guclu kilan budur. Minimum bilesene sahiptir. Kullanicilar kendi bilesen kitapliklariyla calisirlar.

C ve diger dillerde komutlari ogrenmek isin %1'.idir. Eger ciddi bir calisma yapiyorsaniz, pek cok seyi bilmeniz gerekir, bunlar ise C, pascal veya digerlerinde pek farkli degildir. Algoritmalardan once (Mesela:):

Big Endian-Little Endian.? Floating-point, fixed point, integer ?
String ?
Bit operasyonlari ?
stack ?
pointer ?
I/O, blocking/non-blocking..

Algoritmalarda ise gidip bessel veya bzip2 algoritmasindan once bilinmesi gereken daha kokten seyler vardir ve mutlaka bilinmelidir:

1. read->buffer->use ve write->buffer->real-write. cevrimi.
2. Block operationlari,
3. Next ve Previous isaretcileri.
4. Array yapisi..
5. Bu liste cok uzar..

Ondan sonra C'nin kendine has ozellikleri gundeme gelir. Bunlar, mesela, fonksiyonlar nasil cagrilir ? stack yonetimi nasildir ? main () nedir ? A->B ile A.B arasinda ne fark vardir ? (char *) NULL ile NULL neden ayni sey degildir ? filan gibi seylerdir.

Maalesef, her konuda oldugu gibi, bu konuda da saglikli dokumanlar Turkiyede yok Temel kaide olarak, bir algoritma her dille implement edilebilir. Algoritma cikarma, optimize etme konularinda tek desteginiz tecrubeleriniz kaliyor genelde. Piyasadaki C ve C++ kitaplari (BASIC, Delphi, Assembler, JAVA kitaplari da ayni) ise, sadece bir komut referansi olarak ele aliyor olayi. Oysa bir C programcisi icin onemli olan bu temel bilgilerdir, libc vs. fonksiyonlari kolayca ogrenilebilir gerektikce...

Diger yandan, C++ ile ses karti driveri yazilmaz gibi bir mesajda var. Yazilir. Sorunda olmaz. Hemde OOP teknikleri kullanilarak. Fakat bu tur low-level islerde donanim+kod ile basederken birde o an 'this'in nerde oldugunu tespit etmek insani cileden cikarir. Tavsiyem, ufak tefek bir seyler yapacaksaniz, C, C++ vs. ile ugrasmayin hic. Oncelikle burada C sartmi diye dusunun. C (C++) bilhassa sistem programlari icindir. Bunu aklinizdan cikarmayin. Bugun mevcut programlarin %95'ine BASIC bile yeterli olur.
0
m1a2
> Bugun mevcut programlarin %95`ine BASIC bile yeterli olur.

ruby, python ;)
0
FZ
+ REBOL
0
FZ
Bir alıntı:

Panelin soru-cevap bölümünde söz alan Dr. Atilla Elçi''nin yorumları ise ilginçti. Bilgi işlem sektöründe son 20 yıldır imperatif (emir kipi modunda çalışan) dillerin hakim olduğunu ve bunların dezavantajlarının hiç ele alınmadığını belirten Elçi, C dilinin donanım mühendislerince geliştirildiğini ve Elektrik-Elektronik Fakültelerinde yetişen insanların gayretleri ve tutuculukları ile bu kadar yaygınlaşabildiğini vurguladıktan sonra bunun sebebini konuya Bilgisayar Bilimleri açısında yaklaşılmamasına bağladı. C ve ona benzer dillerin süreç içinde bu dezavantajları yansıttığını, C++ gibi hibrit bir dilin problemleri gidermek konusunda yeterince başarılı olamadığını söyleyen Elçi, gerçek verimliliğin donanımı ya da platformu değil daha soyut bir seviyeye çıkıp uygulamayı, çözüm geliştirmeyi vurgulayan dillerle geleceğini iddia etti.

Kendimi okulda ve sınavda gibi hissettim valla, söyle bakiim yavrucum 'NULL ile (char *) NULL arasındaki fark nedir, sonra anlat bakalım little-endian, big-endian olayı nasıl oluyor, vs' ;-)



C ve kaynak meselesine gelince, C ve Sistem Programcılar Derneği kurucularından Kaan Aslan'ın çıkarmış olduğu kitaplar sanırım epey kaliteli ve detaylı olarak kabul edilebilir:

- A'dan Z'ye C kılvavuzu

- Intel İşlemcileri Korumalı Mod Yazılım Mimarisi

- C Yanlışları



Bu arada algoritmalar ve veriyapılarından bahsederken benim kast ettiğim bessel ya da bzip2 gibi şeyler değil daha çok temel veriyapıları ve algoritmalardı yani işte yığıt, kuyruk, ikili ağaçlar, graflar gibi veriyapıları ile bunlarla bağlantılı olarak çalışan arama tarama, sıralama algoritmaları gibi şeylerdi.
0
FZ
Hangi amaçla program yazacağın çok önemli bir parametre yani cihaz sürücü yazmak istiyorum hangi programlama dilini öğreneyim demekle, müşteri ilişkileri yönetimi sistemi yazmak istiyorum hangi dili öğreneyim demek ve farklı cevaplar almak olası (ve de sağlıklı).

JAVA - C# kıyaslamasına gelince, ilk belirtilmesi gereken söz dizimi (syntax) olarak bu iki dilin birbirine çok benzediği hatta nerede ise %99 oranında özdeş olduğu, yani JAVA ile yazılmış bir koda baksan ve aynı işi yapan C# koduna baksan ilk bakışta ayırd edemeyeceğin kadar benziyor bu iki dil birbirine.

Senin soruna ancak yine sorular dizisi ile karşılık verilebilir: Ne tip programlar geliştirmek istiyorsun, hangi platformları hedefliyorsun, hangi kitleyi hedefliyorsun, hangi cihazları hedefliyorsun, hangi tempoyu hedefliyorsun, vs. vs.?

Yok eğer derdin en temel veri yapıları ve en temel algoritma analizi ile uğraşmaksa, yani temel bilgisayar bilimleri bilgileri edinmek ise o zaman tavsiyem denemelerini C dilinde yapman ve bu dili belli bir seviyeye kadar öğrenmendir. Bu şekilde edineceğin temel bilgi ileride işine mutlaka yarayacaktır (sen farkında olsan da olmasan da).

Sen daha fazla yorum yapmadan, bilgi vermeden, soruları cevaplamadan daha fazla bilgi verip kafa karıştırmak doğru olmaz diye düşünüyorum.
0
omniheurist
Sana tavsiyem, ciddi anlanda bir programlama öğrenme çalışmasına Java'dan başlaman. Java'nın avantajı kolay anlaşılabilen ve az sayıda kuraldan oluşması. Hatta bunu ifade etmek için Java'ya C-- diyenler bile var :) . Fakat bundan Java'nın C++'ın altkümesi olduğu yargısına ulaşılmamalıdır. Java ve C++ 'ın kendilerine ait ayrı ayrı güçlü noktaları var.
Eğer klasik programlama dili yapılarına (döngüler, akış kontrolü vb) hakimsen Thinking in Java (Bruce Eckel) kitabı ile başlayabilirsin. Bu kitap internetten bedava indirilebiliyor (www.bruceeckel.com)
May the source be with you!
0
anonim
Peki teşekkürler. Soruyu biraz daha açayım. Çünkü sormak istediğim şeyi tam olarak analatamamışım. C++ veya C'den zaten vazgeçmiş gibi görünüyorum. Çünkü yorumlardan bazlıarında da belirtildiği gibi amaç çok önemli. Şu anda ASP ve PHP gibi web programlama dilleri ile uğraştığım için web konusuna kendimi daha yakın hissediyorum. Bu yüzden Java veya C# arasında kaldım. Benim tercihim Java olacak gibi görünüyor. Çünkü C# konusunda daha oturmuş türkçe kitapların çıkması biraz zaman alacaktır diye düşünüyorum. Ne de olsa yeni bir dil uygulamaya geçtimi bilmiyorum. Java ile hem local programlar yazabilirim hem web için appletler yazabilirim hem de JSP olayına girebilirm. Bildiğim kadarıyla bilişim sektöründe Java oldukça popüler. C# ve .NET platformunun tam olarak ne olduğunu ise doğru dürüst bilmiyorum ama tek bir firmaya bağımlı olmak istemiyorum. Öte yandan 1 -2 yıl içinde piyasada C# programcılar en çok arananlar olursa tüh be! zamanında yanlış karar vermişiz demek istemiyorum.

Ben şimdi Java ile başlayayım, gerektiği zaman C#'a da geçerim diyorum. İtirazı olan var mı?
0
anonim
Istanbul'dan bir arkadas aradi, 'PHP ile okul projesi var' dedi. Ben de OK dedim. Isin kendime dusen kismini belirlenen surede hallettim. Buraya kadar bu her gun yasadigimiz bir sey zaten. Ilginc olan bundan oncesi. Bundan once bir tek satir dahi PHP kodu yazmamis, Dergilerde PHP anlatan sayfalardaki, kodlari sayfalari karistirirken gormus, dahasi kendine homepage dahi yapmamis HTML garabetinden bile bi haber bir vatandasin bunu yapmis olmasi.

Sozun ozu su. Programlama icin dil degil metotlar onemlidir. Her dil digerine benzer ve dillerin kabiliyetleri temel catilari iki-uc ana grupta toplanir. Ornegin yapisal bir dili ogrenmekle digerlerinin %90'ini ogrenmis olursunuz: procedure, while.. for.. if.. Yani Pascal ogrenmekle Bir hayli C ogrenmis olursunuz. Java ogrenmekle'de bir hayli C# ogrenmis olacaksiniz. bunlarin tamaminin bir tercuman oldugunu unutmayin.Hepsinin temeli Assembler ve makine yonergeleri. Bir gun buna ihtiyac duyacaksiniz. Kullanmaya degil, ne oldugunu bilmeye. o gun gelmeden yeterince bunu ogrenmis olun. Bellek islemleri, stack islemleri vs. Bir gun hepsi gerekecek. Ama o gune gelinceye kadar is yapmak lazim. Iste o nedenle Java veya C# ogrenmenizde bir fark yok. Ogrenme sureside tamamen size baglidir. Ikiside Object oriented yapida. demekki ogrenme hiziniz ikisi icinde ayni olacaktir. Aradaki fark, ilk programinizi yazmak icin degilde, programlari yazarken gecen surede farkedilir. bu da ogrendiginiz dilin size sundugu class library ile alakali bir mevzudur. Daha cok ve daha karisik class'lar daha gec ogrenmek demektir.

Sonucta -hemen hemen- tum diller ogrenmek/is yapmak acisindan ozdestirler. Size kolay gorunen dil, sizi makineden daha cok soyutlar. Bu da bir noktada makinaya hukmetme yeteneginizi azaltir. Zor gorunen C vs. ise makineye hukmetme yeteneginizi artirir. Gercek manada 'Programci' oldugunuzda dillerin arasindaki farkliliklarin application-specific oldugunu gorursunuz. Yeni bir dil ciktiginda vs. ogrenmek icin efor sarfetmezsiniz, alir kullanirsiniz. Iste bastaki hic HTML dahi kullanmamis adamin oturup PHP ile program yazmasindaki dustur budur. Benim gozumde bazen BASIC vazgecilmezken, bazen Assembler o konuma gelir. Cogu projemde 4-5 farkli dil kullandigim da olmustur.

Size gereken dil ogrenmek degil, programciligi ogrenmek. Dil bir aractir. Bu araclardan en iyi olanini, anlatacaginiz seye bagli olarak secersiniz. Hatta, 'Abi, bir atraksiyon yapalim, bab-i aliyi ayaga kaldiralim soyle, mansetlerde sorf yapsin namimiz' diyebilirsiniz, bu cumlenin icinde 4-5 farkli dil (de kelime) kullaniliyor. Iste programcilikta boyledir. Hangi dil o anda aklinizdan geceni en iyi anlatacak kelimeye sahipse en iyi dil o an icin odur..
0
FZ
Bütün programlama dilleri birbirine benzer sözü biraz yanıltıcı bir söz. Bütün yapısal programlama dilleri, ya da bütün nesneye yönelik programlama dilleri birbirlerine benzer deseydin daha doğru olurdu.

Basit bir örnek: Yıllarca C ile program yazdıktan sonra okuldaki PROLOG derslerinden ötürü gittim ve PROLOG ile ilgili detaylı bilgi veren ve klasikleşmiş kitapları bir güzel okudum, bitirdiğimde ise beynim bulanmıştı ;-) Sanki yabancı bir dil öğreniyor gibiydim ve epey bir müddet cümle dahi kuramadım ;-)
0
anonim
Demekki, C Yi ogrenmissin ama programcilikta o kadar iyi olamamissin o devirde..
Yapisal, Nesneye yonelik, Event Driven vs. pek cok model mevcut elbette. Prolog ile C arasindaki gibi keskin ucurumlarda var aralarinda. Fakat temel olarak her sey ayni. Keskin bir goz, PROLOG'un su su fonksiyonunun C ile hazirlanacak soyle soyle bir yordama esit oldugunu hemencecik gorebilir.
Bence, tum diller birbirine benzer. Ama ayni cati altindaki diller birbirine daha cok benzer. Basit bir ornek vereyim, tum diller *hemen hemen tum diller* bir dosya acma, okuma yazma fonksiyon setine sahiptir. Yapisal dillerin hepsinde, for, while, if vs. hemen hemen ayni kaliptadir.
Iyi program yazmak icin gerekli olan iyi programcidir. Iyi dil degildir bence.. Pek cok ingiliz ingilizceyi hepimizden daha iyi bilir ama pek cok Turk ingilizceyi onlardan daha guzel kullanir. Yani, Fransizca biliyor olmak, hemen ertesi gunu Fransiz edebiyatina yeni bir roman kazandirirsiniz anlamina gelmez. Sizde roman yazacak kabiliyet varsa, hemen her dilde yazabilirsiniz. En buyuk fark, Yazarlik belki biraz dogustan bir kabiliyettir, fakat Programcilik, gercek programcilik ugrasarak ogrenilebilir.
0
FZ
Bu yazı bir miktar polemiğe yol açabilir ancak baştan belirteyim ki niyetim bu değil.

PROLOG dilini örnek verdim çünkü gerçekten çok keskin ve bazı durumları iyi açıklayan bir örnek. PROLOG'u öğrenmekte en çok kimler güçlük çekiyor biliyor musun? C, PASCAL gibi yapısal programlama dillerinden uzun süre yazılım geliştirmiş, onların kalıplarına alışmış kişiler. Çünkü yapısal programlama dili olarak bildiğimiz dillerin çoğu, bizi makinaya ne yapılacağı ile birlikte NASIL yapılacağını da adım adım açıklamaya zorlayan diller. Bu tip bir mantalitede ustalaşan bir programcının karşısına sadece neyin yapılması gerektiğini söylemesi gerektiği bir dil koyunca garip bir durum ortaya çıkıyor.

Genel anlamda bütün programlama dilleri birbirine benzer demek, bir kum tanesini inceleyerek evrenin tüm sırlarını anlayabilirsin demek gibi bir şey, yani mistik anlamda hoş bir söz ama reel anlamda en azından şimdilik çok da pratik anlamı olan bir söz değil. Her ne kadar birleştirme çabaları olsa da, insanlar atomaltı parçacıkları incelemek için farklı formül setleri, karadelikleri, yıldızları incelemek için farklı formül setleri, teoriler kullanıyor.

Keskin bir göz meselesine gelince, valla PROLOG'taki genel mantıksal çıkarım modelinin C ile hazırlanacak şöyle şöyle bir yordama eşit olduğunu görmek o kadar da kolay değil gözün ne kadar keskin olursa olsun. Zaten tam da bu sebepten ötürü böyle bir programlama dili geliştirilmiş.

Tabii PROLOG sadece bir örnek, söz gelimi bambaşka bir dünya olan FONKSİYONEL programlama dillerinden de örnek verilebilir (konu ile ilgilenip de bu yazıyı okuyanlar lütfen örnek versinler ;-)

Şüphesiz yetek her yerde yetenektir ve genel anlamda modelleme yapmasını bilen bir yazılımcı değişik araçları optimum şekilde birleştirecektir. Ancak CAT firmasının ticari bir sloganını, ticaretin de ötesinde şeyler çağrıştırdığı için burada bir kez daha tekrar etmek istiyorum : Önce biz araçları tasarlarız, sonra o araçlar bizi şekillendirir!
0
anonim
> Keskin bir göz meselesine gelince, valla PROLOG'taki genel mantıksal çıkarım modelinin C ile hazırlanacak şöyle şöyle bir yordama eşit olduğunu görmek o kadar da kolay değil gözün ne kadar keskin olursa olsun. Zaten tam da bu sebepten ötürü böyle bir programlama dili geliştirilmiş.

Bu program en nihayetinde opcode seti belli, bellek modeli belli olan CPU uzerinde calisacak. Sistem cagrisi olarak DOS/POSIX vs. bir API'den faydalanacak. Demekki, sonucta elde edilen kodda print/printf komutu dahi bulunmayacak. Eger bu hipotez dogruysa, ayni isi yapan programin C veya Assembler gibi tamamen aykiri bir duzlemdeki dillerle de yazilabilecegi de dogru olmali. Eger, biz prolog veya fesmekan dilinde x-y-z islevini yaptigimizda, bunun C veya Falan dilinde nasil implement edilebilecegini bilmiyorsak, programci olamamisiz demektir.

Eeee, OCR'den, Transactional DB'ye bir yelpaze.. Omur yetermi bu ise.. Elbette yetmez saniyorum. Bu nedenle ihtisaslasmak onemli. Bunu yapmak sart ama, temel bilgileride bilmekte o kadar sart..

Sonucta, prolog ile farkli yolla, C ile daha farkli yolla yapiliyorsa da, XYZ mimarisinde calisacak her program oyle yada boyle her dille yapilabilir. Elbette hiz, kaynak ihtiyaci filan olarak bakildiginda, yani is pratige girdiginde, renkler tartisilmaya baslar.. Eger birisi, calisan uygulamaya baktiginda nasil bir dumen dondugunu anlayamiyorsa, o konda programciligi zayiftir.

Benim tezim boyle. Polemik ? Kirk yilda bir Istanbul'a gelmisiz, rihtima oturup 'Ne olacak bu fenerin hali ?' geyigi yapmaktansa buralarda kafa goz yaran bu tur polemiklere her zaman daha sicak bakarim netekim ...

Bu alet benim degil. Login olmuyorum ondan. Sundance'in en cok kizdigi seydir anonim yazmak. Ozurlerimi sunarken muhterem dostuma, en azindan bir imza atayim:

skoylu.. Tembel FM'ci..
0
FZ
Valla gördüğüm kadarı ile programcı, donanımı ya da alt seviye API'yi bilen adamdır, bunu bilmeyen adam programcı değildir gibi bir tanım yapar gibisin. Bu biraz enteresan bir tanımlama olmuş bence. Pek çok durumu dışta bırakan bir tanım gibi ve dışta bırakılan durumlar pek çok programlama problemini içeriyor gibi. Yani elbette PROLOG ile yazılmış her program Assembler ile de yazılabilir ama burada konunun bu olduğunu zannetmiyorum. Belki de söylemeye çalıştığım şey Whitehead üstadın (Russel ile birlikte Principia Mathematica adlı eseri yazan matematikçi) matematik için söylediği şeydir : Matematiğin nihai amacı matematiği gereksiz kılmaktır.

Donanıma yönelik alt seviye programlama söz konusu olduğunda doğrusal, yapısal ve düşük seviyeli diller elbette anlamlı ve elbette bunlarla kıvrak ve çevik iş yapabilmek rekabet edebilmek açısından sonra derece önemli ancak buradan yola çıkıp farklı programlama paradigmalarının birbirlerine indirgenebileceğini söylemek pek de bir şey söylemek gibi görünmüyor bana. Bilgisayar ve matematiğin kesiştiği dünyadan örnek vermek gerekirse, bir Fransız araştırmacı birkaç ay önce Dr. Dobb's Journal'da yayınladığı makalesinde standart TCP/IP kullanarak networkteki bir makinaya bağlanıp o makinanın kullanıcısının izni ve haberi dahi olmadan söz konusu makinaya bir toplama işleminin sonucunu (a + b ?= c) kontrol ettirebildiğini gösteriyordu. E ne var ki bunda diyenlere de şunu söylüyordu, tüm matematik işlemlerinin yukarıdaki işlem tipinde bir işlem dizisine indirgenebileceği ispatlanmıştır. Yani bu da demek oluyor ki misal ben karman çorman formüller kullanan bir teoriye bakıp da bunun yukarıdaki işlem tipinden bir diziye indirgenebileceğini daha doğrusu bunun NASIL yapılabileceğini göremiyorsam o zaman ben pek de bir şey anlamıyorum öyle mi? Doğrusu oldukça naif bir yaklaşım.

Sanırım burada konu temel bilgilerin bilinmesi noktasında ağırlık kazanıyor ki buna itiraz ediyor değilim, yani temel algoritmaları, veri yapılarını ve eğer alt seviye programlama yapılacaksa donanım mimarisini bilmek falan elbette önemli şeyler ancak ilgilendiğimiz problem uzayı çok daha meta bir seviyede ele alınabiliyorsa bu durumda bunları düşünmeden sistem tasarlayan birine programcı demezsek ne diyeceğiz? Bu soruyu neden sordum, şunda sordum İTÜ'de Uçak ve Uzay Bilimleri Fakültesinde okuyan kardeşimin aldığı Yapay Zekâ dersini veren hoca son 10-15 yıldır PROLOG ile program geliştiren, problem çözen bir profesör ancak arada sırada kardeşim adama 'yahu hocam, sen şimdi burada şöyle bir yapı kurmuşsun ama bu manyak özyineli bir yapı stack dolup taşmaz mı, alet şişmez mi?' falan dediğinde adam kardeşimin kaygılarına bir türlü anlam veremiyor ve 'valla dediklerin alt seviye şeyler, derleyici ile falan ilgili ben onlarla ilgilenmiyorrum' falan diyormuş. Şimdi adamı bu cevabından ötürü aşağı bir konumda görebilir miyiz programcılık bakımından? Mümkündür, görebiliriz. E bu durumda adama programcı da dememeliyiz, e o halde bu adamın yazdığı şeyler nedir? Program ama onları tasarlayan programcı değil? Ya da programcı ama dünyadan habersiz programcı mı?

Son olarak polemikten biraz olumsuz bir şey kast etmiştim yoksa karşılıklı görüş alışverişi ve bir sonuca varmaya çalışan, fikirlerin çarpıştığı bir tartışma tabii ki benim nezdimde de kötü bir şey değil ;-)

FZ, tembel olabilecek kadar zeki olmayan FM'ci.
0
anonim
Olaya biraz soyle bir bakalim. Iyi bir matematikci ne kadar iyi matemakcidir ? Sizce en iyi matematik denklemi kendi kendini cozen bir denklem midir ? Toplamayi bilmeyen, karekok -1 kavramini bilmeyen birisi ne kadar matematikci olabilir ?
Piyasada su anda guzel ve gosterisli hesap makineleri var. Matematikcilerde kullaniyor. Regresyon analizi yapan programlarida bu tur bir hesap makinesi olarak gorebiliriz. Simdi, iki sayininin nasil toplanacagini bilmeyen birisinin bu hesap makinelerini ele alip kendini matematikci ilan etmesi ne kadar dogrudur ? Oysa bugun, ayni sekilde, hesap makinesi kullanmayi ogrenen (Yani VB ile form cizmeyi) ogrenen kendinini matematikci ilan ediyor (yani programciyim) diyor. Excel ile vergi iadesi hazirlamak icin form yapmis 'Programci oldum artik' diyor. Elbette bu ise yillarini vermis olanlar biyik altindan guluyor. Yarin su su olursa ogrenir Programcilarin neden depresyon sinirinda gezdiklerini diyerek..
Peki nedir mesele ? Herkesin illada programci olmasi gerekmez. Herkesin fourier sentezini bilmesi gerekmedigi gibi. Alirsin bir hesap makinesi sana yapar isini (Veya exceli, IPSS'i, SQL serveri...) Fakat meydanin bosluguna guvenip ben programciyim diyebilir mi ? Ama diyorlar.. Maalesef, programlamanin gercek yuzunu bilenlerde, bilmiyenlerde ayni 'Programci' catisina giriyor. Buda kafalari karistiriyor.
Kardesinizin prof'u birgun hasbel kader yaptigi program stack overflow yerse, iste o zaman ogrenir stackin ne oldugunu. Bugun her cagri kullanan dil potansiyel bir stack overflow noktasidir. Dedigim gibi overflow yiyince basina, veya program anlamsiz bir sekilde kilitlenince gider eli mahkum o dusuk seviye seyleri pasa pasa ogrenir.
Benim program yazdigim ilk makina bir sinclair ZX81'di. Yazdim, yazdim, yazdim. Kut, bellek bitti. Iste o zaman ogrendim bellegin ne demek oldugunu. Gene bir defainda GOSUB ile gittigim yerden GOTO ile geri donunce STACK nedir onu ogrenmistim.
Sorun sizinde farkina vardiginiz sekilde. Programci dediginiz sinifa excelde iki sayiyi toplamayi ogrenende, C#'i tasarlayan ve yazan adamda (Eski bir GPL programcisidir kendileri) giriyor. Bu saatten sonra yeni bir terim koyamayacagimiza gore (Gerci, neden olmasin ?) programciyi en ideal duruma en iyi yaklasan olarak gormemiz lazim. Bu en ideal durum nedir ? Hic bir yerde bir RFC, standart vs. yok maalesef.
0
FZ
Konunun bağlamı biraz kaydı gibi geliyor bana. Visual Studio'da tek bir form çizen ve üzerine bir buton bir de buna bağlı bir olay yerleştiren adama programcı diyebiliriz gibi bir şey iddia etmedim ki ben hiçbir zaman, bilakis bunun saçma olduğunu söyleyecekler listesindeyim. En başta söylediğim tek programlama paradigmasının yapısal-doğrusal paradigma olmadığı PROLOG gibi farklı programlama mantaliteleri de olduğu idi. Elbette her şey ikili (binary) makina koduna indirgenebilir ama düşünceyi ilerletmek için farklı paradigmalara, meta seviyelerde iş yapmaya farklı bakış açılarına ihtiyaç oluyor. Benim söylemeye çalıştığım şey bu idi, yani söz gelimi Assembler kullanarak muhteşem ve küçücük bellek alanlarında acayip güzel demolar yapan, makinaya göbek attıran biri belli bir problem alanında uzmanlaşmıştır ancak bambaşka bir problem alanına geçtiğinde, misal yapay zekâ gibi, o zaman belki de bildiklerinin bir kısmını unutması ve yeni kavramlarla düşünmesi gerekecektir ve bu da kolay olmayacaktır, aha bu yapılan programın daha hızlısın ben oturur Assembler ile yaparım diye düşünmesi onun açısından güzel bir ego tatminine yol açabilir ama çok verimli bir düşünce şekli olduğu söylenemez.

Spectrum'a gelince, duygulandım, tüm Spectrum programcılarını selamlarım, benim de ilk göz ağrımdı (ZX Spectrum 48K).

C# dilini tasarlayan bildiğim kadarı ile Andreas Hejlsberg (biraz karışık ve zor telaffuz edilen bir soyadı). Bu üstad vakti zamanında Borland için Turbo Pascal derleyicisini ve IDEsini geliştirmiş sonra da geliştirdiği Object Pascal ile DELPHI sistemine ön ayak olmuş ve nihayetinde de Microsoft şirketinde çalışmaya başlamış. GPL ile bağlantısı var mıdır, varsa nedir bilemiyorum.

Belki de en iyisi temel ayrımı Gerald Weinberg'in Psychology of Computer Programming kitabında yaptığı gibi amatör programcı, profesyonel programcı olarak koymakta fayda var... derim ve şimdilik burada bir ara veririm ;-) Yazmam gereken programlar var da ;-)
0
anonim
Konuyu toparladigimizda siz de ayni tarafa dogru gidiyorsunuz zaten hocam.. Programci, giris seviyesi, orta seviye, ust seviye.. Maalesef, tabir hepsi icin 'PROGRAMCI'. Kargasa buradan geliyor. Isyerinde ufak tefek seyler yapmak icin Java ogrenen elemanla, Linus Torvalds ayni kefeye giriyor vesselam.
Giris seviyesi bir programcinin ya ayni cizgide devam etmesi yada daha iyi olmasi secenekleri var. Eger daha iyi olmak istiyorsa, altta donen dumenleri vs. ogrenmek zorunda. Maalesef, oyle.. Ama yarim yamalak Java, Pascal, Visual BASIC vs. ogrenip is yapmak mumkun Elbette bir an gelip program siser, ikide bir patlamazsa. Programi sisirecek kadar kod yazmak gerekmezse. Hayati gayet guzel devam eder. Taa ki, bir noktada stack'i patlatirsa o zaman ogrenir stack, bit, little-endian vs. neymis ..
Hic kimseye, bunun basina gelecegini hissetmeden bunu ogrenmeye kalkmasini tavsiye etmem. Cunku hakikaten onu ogrenmek zorunda degilseniz, hem Java, VB ile daha rahat yasarsiniz, hemde ogrenemezsiniz kolay kolay.. Once print, input, label, event filan ogrenin. Onlari iyice bir hazmedin. VB dokumanlarinda bile bu low-level isler icin yeterince bir seyler mevcut.
0
anonim
Evet.. Guzel bir program var. Su kadar kat su kadar arsa alani vs. giriyorsun. Sana binanin statik hesabini yapip veriyor. Bir baskasi var, tik, tik, tik binayi ciziyorsunuz, oteki programa hesaplatiyor. Hatta kac kg. cimento gidecegini de hesaplatiyor. simdi, az otedeki bayan bu programi canavar gibi kullaniyor. Lise mezunu, ticaret lisesi. Simdi bunu kullanmayi ogrenip kendine ben insaat muhendisi oldum diyebilir mi ? Ama Java ile vs. basitce form yapmayi ogrenen ben programci oldum diyor. Eger sonuc acisindan bakarsak bence o bayan ile muhendis ayni sonucu uretebiliyor. Peki birini operator digerini muhendis yapan fark nedir ? Iste programciyi da programci yapacak olan bu farktir. Bilmem anlatabiliyormuyum ?
0
FZ
C# ile ilgili detaylı ve Türkçe'ye tercüme edilmiş bir kitap şu anda piyasada satılıyor, ben Ankara'da Dost Kitabevin'de iki hafta önce görmüştüm (Microsoft Press tarafından yayınlanmış, tercüme bir kitap). İstanbul'da da kitapçılarda bulunabileceğini tahmin ediyorum. Giriş seviyesinden alıp orta seviyeye getirecek bir kitap gibi göründüğünü söyleyebilirim. Düzgün bir formatta basılmış ancak şimdilik daha fazla yorum yapmam doğru olmaz çünkü çok detaylı incelemedim. Uygulama manasında ise Internet üzerinde birazcık aramayla dahi pek çok C# ile yazılmış ya da C#'ya aktarılmış uygulama bulabilirsin (eski klasik oyunlardan tut da, Internet uygulamalarına kadar).

Java, JSP teknolojilerini iyi bilen biri C# ve .NET platformunda pek güçlük çekmeyecek ve kolayca adapte olabilecektir, bu konuda itirazı olan var mı? ;-)

Microsoft'un yaygınlığı ve pazarlama stratejileri göz önünde bulundurulursa (ki piyasada pek çok büyük kurum .NET platformu için uygulama geliştirmeye başladı ve bunlar arasında bankalar da var) değil 1-2 yıl sonra, bu yılın yani 2002'nin ilerleyen aylarındaki iş ilanlarında C# ve .NET bilen eleman aranıyor diye talepler görürsen şaşırmamalısın!

Şimdi JAVA'ya başlayıp ardından C#'a da geçebilirsin çünkü bunlar birbirine çok benziyor.

İtirazı olan yok, sadece yorumu olan var ;-)
0
anonim
Java kitabı yerine bir C kitabı almanı tavsiye ederim C yi bilirsen c++ sana çok kolay gelir ama hiç proglamlama bilmiyorsan en kolayından başla yani Visual Basic'ten kolay galsin
0
anonim
Elinize saglik cidden. gidemedik diye uzuluyorduk.

cidden gitmis kadar olduk.
0
anonim
uzun süre bakamamıştım konu bayaa uzamış. ben bir java kitabı aldım. diğer dillere geçiş knusunda da içimi oldukça rahatlattınız.
ben asla ucundan öğrenip programcıyım demem diyenle de muhattap olmam. bu konuda sylenenleri üstüme alınmadım sadece fikrimi belirtmek istedim ;)
teşekkürler ve iyi çalışmalar...
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Özgür Yazılım ve Açık Kaynak Günleri 2008 - Duyuru

butch

İstanbul Bilgi Üniversitesi, Bilgisayar Bilimleri Bölümü tarafından 2003 yılından beri ilkbahar aylarında gerçekleşmesine alıştığımız Özgür Yazılım ve Açık Kaynak Günleri bu yıl sonbahar aylarında düzenlenecek. Etkinlik hakkında detaylar önümüzdeki günlerde duyurulacak.

Sıkça Sorulmayan Sorular

FZ

Bir dergi çıktı. Adı : FUQ - Sıkça Sorulmayan Sorular.

%90'ı acayip röportajlardan oluşan bu dergiyi eğer en yakınınızdaki gazete bayiinden alırsanız nelerle karşılaşacaksınız? :

Yapay Zeka, Matematik ve İnsan Aklı - 2. Raund

malkocoglu

Sir Roger Penrose adlı uygulamalı matematikçi kendini en çok Stephen Hawking ile olan kozmoloji araştırmaları ile bahsettirmiştir. Bir de Güçlü Yapay Zekâ (Strong AI) denen, insan zihninin birebir kopyalanmasını düşleyen bilim dalına yaptığı eleştiriler ile...

Dünya Sayısal Kütüphanesi WDL Açıldı

FZ

BM Dünyanın Bilgisi Kütüphanesini Açtı

4. yüzyılda Arap yarımadasında ne tür bilimsel gelişmeler oluyordu? Peki ya aynı dönemde Çin'deki ve Güney Amerika'daki politik durum nasıldı? 5. yüzyılda Japonya'daki edebiyatı İskandinav mitolojik metinleri ile kıyaslamak ister misiniz?

İnsanlık tarihindeki dönüm noktalarını temsil eden kültür hazineleri olan özgün eserler sayısal ortama aktarıldı ve Birleşmiş Milletler desteği ile http://www.wdl.org adresinde yayına sunuldu.

Dünya haritası üzerinde istediğiniz zaman aralığına kısıtlayabileceğiniz etkili ve basit bir navigasyon yapısı sunan World Digital Library içinde tarihteki ilk roman kabul edilen Japonca eserden tutun, Arap bilginlerin ilk cebir metinlerine dek türünün ilk örneği olan belgelere ve bunlarla ilgili uzmanların açıklamalarına erişmeniz mümkün.

Wikipedia'nın Babası İstanbul'daydı

FZ

İçeriğini internet kullanıcılarının oluşturduğu bir ansiklopedi yaratmak fikriyle yedi yıl önce faaliyete geçen Wikipedia'nın kurucusu Jimmy Wales, 'Altivi ile Sınırsız Dünya Liderleri' seminerleri kapsamında dün İstanbul'daydı.

1966 yılında doğan Amerikalı internet girişimcisi Jimmy Wales, Wikipedia fikrinin insanların internette bir araya gelerek açık kaynak kodlu yazılımlar ortaya çıkarmaya başlamasından sonra aklına geldiğini söylüyor. "Yazılımları neden içeriğe taşımayalım?" diye düşünen Wales, yedi yıl içinde dünyanın en büyük ansiklopedisini oluşturmayı başardı. Hem de kendisini hiç yormadan...