Yeni bir bilgisayar dili icat edilecekse nasıl olmalı?

Çok zor bir dil, sadece çok zeki veya profesyonel insanların yapabileceği ve öğrenebileceği bir dil gelmesini isterdim. Böyle yapanların özel şirketlere alınması için şirketler yarış falan yapıyor.
Hiç bir şirket öyle bir dil için yatırım yapmaz. Hali hazırda binlerce bilgisayar dili var. Popüler Phyton, C# vb. diller dışında zaten binlerce dil var. Beş para etmeme sebeplerinden bir tanesi de zor olmaları. İşlevsel ve kolay olan diller ise bu popüler diller gibi piyasaya hakim oluyor.

Yazılım sektöründe hangi dili ne kadar bildiğinden çok ortaya ne koyduğuna bakarlar. Dünyanın en zor diliyle yazdığın bir programı, lise öğrencisi basit bir dille yazabiliyorsa seni değil onu işe alırlar.
 
Hiç bir şirket öyle bir dil için yatırım yapmaz. Hali hazırda binlerce bilgisayar dili var. Popüler Phyton, C# vb. diller dışında zaten binlerce dil var. Beş para etmeme sebeplerinden bir tanesi de zor olmaları. İşlevsel ve kolay olan diller ise bu popüler diller gibi piyasaya hakim oluyor.

Yazılım sektöründe hangi dili ne kadar bildiğinden çok ortaya ne koyduğuna bakarlar. Dünyanın en zor diliyle yazdığın bir programı, lise öğrencisi basit bir dille yazabiliyorsa seni değil onu işe alırlar.
Ben onu kastetmedim. Zor bir dil çıkacak ama o dil ile yapılan programlar,kodlar çok para getirecek. Diğer diller ile yapılamayacak, yapılsa bile onun gibi olmayacak bir dil kastetmiştim. Tabii hayal bu. Ben sadece biraz hayal gücümü kullandım.
 
Ödevi bize sorman, hatta bizden yapmamızı istemen yanlış biraz, etik değil. Ama bence hafif scratch veya Ue'deki Blueprint mantığı ile standart kodlamayı birleştirebilen, tamamen TR desteği sunabilen, yazımı ve öğrenimi kolay bir dil olsun isterdim.

Öncelikle görüsüne saygı duyuyorum kimseden ödevimi yapmasını istemem sadece fikir alısverisine girmek istiyorum karsılıklı münakasa edelim sürekli yeni bir dil cıkıyor ve belli bir süre popülaritesini koruyor. İnsanlar bu dilleri secerken işlevselliğine anlaşılır olmasına önem veriyor anlaşılması için söyle devam ettirelim simdi ki kullanılan dillerde yetersiz gördüğünüz ne var hangi özellikler eklense daha modern daha kullanışlı bir dil olur mesela ben örnek veriyorum Siri'nin yapay zekası gibi bir yardımcı asistan esliğinde kodlar yazılabilir.
Ben onu kastetmedim. Zor bir dil çıkacak ama o dil ile yapılan programlar, kodlar çok para getirecek. Diğer diller ile yapılamayacak, yapılsa bile onun gibi olmayacak bir dil kastetmiştim. Tabii hayal bu. Ben sadece biraz hayal gücümü kullandım.

Kesinlikle bu tarz fikirler istiyorum yaratıcılıkta sınır yok.
 
Ben onu kastetmedim. Zor bir dil çıkacak ama o dil ile yapılan programlar,kodlar çok para getirecek. Diğer diller ile yapılamayacak, yapılsa bile onun gibi olmayacak bir dil kastetmiştim. Tabii hayal bu. Ben sadece biraz hayal gücümü kullandım.
Demek istediğini anladım ama fizible olmaz demek istiyorum bende :) Adını duymadığın binlerce yeni dil doğuyor günden güne. Her yazılımcı kendi programlama dilini yaratmakta özgür. Ama bir dili değerli kılan yegane şeylerden biri kolay öğrenilebilir olması. Phyton bu yüzden oldukça popülerleşti. Milyonlarca satır kod yazarken karmaşık bir şeyle uğraşmak istemezsin. Kimse istemez. Gereği de yok. O yüzden yeni diller geliştirilirken pratik ve işlevsel olması istenir. İsteyen herkes kendi programlama dilini geliştirebilir. Ama piyasada kullanılanların sayısı parmakla sayılıdır. Çünkü zor olan şey programlama dili geliştirmek değil, kolay ve pratik bir dil geliştirebilmek. Amatörlerin ürettikleri programlama dilleri zaten zor ve karmaşık oluyorlar ve bu yüzden onlara amatör deniyor :) Bir çok dilde de o dili tasarlayandan başka bilen yok çünkü karmaşık ve gereksiz.
 
Ben onu kastetmedim. Zor bir dil çıkacak ama o dil ile yapılan programlar, kodlar çok para getirecek. Diğer diller ile yapılamayacak, yapılsa bile onun gibi olmayacak bir dil kastetmiştim. Tabii hayal bu. Ben sadece biraz hayal gücümü kullandım.

Aslında Java'yı hatta daha da geri gidersek COBOL'u tarif etmişsiniz :D . Java çok eski bir dil ve bu tarihinin getirdiği bir sürü farklı standart farklı kütüphane farklı altyapı sunucuları vs. var. Bunların hepsini bilen bir Java geliştiricisi yoktur herhalde şu an piyasada fakat Java ile geliştirilmiş tonla proje var ve bunları bilen eleman lazım. Özetle öğrenilmesi çok zor ama talebi çok olan bir dil ve ekosistem varsa şu an bu Java olabilir. C# zaten bunun temize çekilmiş hali. Tabi o da artık yılların getirdiği yük ile karmaşık bir hale geldi ama Microsoft bu süreci Oracle'dan çok daha iyi yönetiyor.

COBOL ise çok daha kötü bir durumda. İlk programlama dillerinden ve finans ve iş sektörü için geliştirilmiş. O kadar eski bir dil ki şu anki dillere hiç ama hiç benzemiyor. Tabi bilgisayarlar ilk çıktığında bu sistemle geliştirilmiş ve hala faal durumda olan COBOL sistemler var. Şimdi bunları geliştirecek adam arıyorlar ama yok tabii ki :D . Maaşlar tavana vurmuş durumda.

Sıfırdan bir dil geliştirilecekse sahip olması gereken teknik gereksinimler aslında belli ama soru bunla mı ilgili bilmiyorum. Öncelikle dahili async desteği olmalı. Yani tek işlekte girdi çıktı bağımlılığı çok verimli bir şekilde yönetebilmeli. Bunu ana akım dillerde ilk JavaScript yapabildi. Teknik anlamda çok kötü bir dil olmasına rağmen async desteği ve güzel paket yönetimi sayesinde şu an en popüler diller arasında. ES6'e kadar async kullanımı kafayı yeme sebebiydi söz dizimi çok karışıktı JavaScript'te. Ona rağmen bu kadar tuttu. Çünkü webte bunu destekleyen başka bir ana akım dil yoktu. Bugün golang bunu çok daha düzgün ve çok daha verimli bir şekilde yapıyor. Söz dizimi de çok daha basit ama topu bir kere JavaScript'e kaptırdı gibi duruyor.

Diğer bir nokta bellek yönetimi. Bu aslında çok daha karmaşık bir konu çünkü idealde bellek yönetiminin programcı tarafında düşünülüp ince ayarına kadar programcı tarafından yönetilmesi gerekiyor. Fakat pratikte bu mümkün değil çünkü bayağı angarya bir iş ve hatalı bir bellek yönetimi kodu yazıldığında hatanın nerede yapıldığını tespit etmek inanılmaz zor. C ve C++'da bellek yönetimi tamamen programcıya bırakılmış durumda. Bu nedenle bu diller ana akım olarak çok karşımızı çıkmıyor :D . Modern C++ Smart Pointers ile bunu çözmeye çalışıyor ama aslında bu hafifte olsa bir yerde dile bir runtime yerleştirme anlamına geliyor. Yani kodun nasıl çalıştığı üzerindeki kontrolü biraz kaybediyoruz, dile bırakıyoruz. Bu yola girdik mi GoLang daha mantıklı bir tercih gibi duruyor. Rust bambaşka bir mantık izliyor. Bayağı dilin dayattığı şekilde çok kuralcı şekilde kodumuzu yazıyoruz. Bellek sızıntısı falan da olmuyor. Sıfırdan bir dil yazılsa nasıl olmalı diyeceksek karar vermek zor. GO ya da Rust'ın yolu tercih edilecek gibi duruyor ama hangisi ideal tartışılır. Rust'un modelinin daha "doğru" olduğunu kabul etmekle birlikte bence insanları programlamadan soğutmama adına GO'nun modeli tercih edilip taviz verilebilir :D . Bu bellek yönetimi konusu Java ve C#'ın kritik sistemlerde tercih edilmemesinin de sebebi. Çünkü otomatik bellek yönetimindeki çöp toplayıcı sistemler devreye girdiğinde çok kısa süre de olsa sistem yanıt vermez hale geliyor. Bu kritik sistemlerde kabul edilebilir görülmüyor. Farklı geliştirmeler var. Hiç bellek sızıntısı yapmadan da bu dillerde kod yazmak mümkün elbette, yeni çöp toplayıcılar bu anlık donmaları çok daha hissedilmez hale de getiriyor ama burada dillerin ve çalışma ortamlarının yamalı bohçaya döndüğünü kabul etmek gerekir.

Özetle genel amaçla programlama dili yazılacaksa async ve bellek yönetimini iyi halletmesi ve kolay sade bir söz dizimine sahip olması bence en temel gereksinim. Bunun dışında paket yöneticisi, interaktif Shell'i falan olsa tadından yenmez ama bunlar sonradan da eklenebilecek şeyler.
 
Aslında Java'yı hatta daha da geri gidersek COBOL'u tarif etmişsiniz :D . Java çok eski bir dil ve bu tarihinin getirdiği bir sürü farklı standart farklı kütüphane farklı altyapı sunucuları vs. var. Bunların hepsini bilen bir Java geliştiricisi yoktur herhalde şu an piyasada fakat Java ile geliştirilmiş tonla proje var ve bunları bilen eleman lazım. Özetle öğrenilmesi çok zor ama talebi çok olan bir dil ve ekosistem varsa şu an bu Java olabilir. C# zaten bunun temize çekilmiş hali. Tabi o da artık yılların getirdiği yük ile karmaşık bir hale geldi ama Microsoft bu süreci Oracle'dan çok daha iyi yönetiyor.

COBOL ise çok daha kötü bir durumda. İlk programlama dillerinden ve finans ve iş sektörü için geliştirilmiş. O kadar eski bir dil ki şu anki dillere hiç ama hiç benzemiyor. Tabi bilgisayarlar ilk çıktığında bu sistemle geliştirilmiş ve hala faal durumda olan COBOL sistemler var. Şimdi bunları geliştirecek adam arıyorlar ama yok tabii ki :D . Maaşlar tavana vurmuş durumda.

Sıfırdan bir dil geliştirilecekse sahip olması gereken teknik gereksinimler aslında belli ama soru bunla mı ilgili bilmiyorum. Öncelikle dahili async desteği olmalı. Yani tek işlekte girdi çıktı bağımlılığı çok verimli bir şekilde yönetebilmeli. Bunu ana akım dillerde ilk JavaScript yapabildi. Teknik anlamda çok kötü bir dil olmasına rağmen async desteği ve güzel paket yönetimi sayesinde şu an en popüler diller arasında. ES6'e kadar async kullanımı kafayı yeme sebebiydi söz dizimi çok karışıktı JavaScript'te. Ona rağmen bu kadar tuttu. Çünkü webte bunu destekleyen başka bir ana akım dil yoktu. Bugün golang bunu çok daha düzgün ve çok daha verimli bir şekilde yapıyor. Söz dizimi de çok daha basit ama topu bir kere JavaScript'e kaptırdı gibi duruyor.

Diğer bir nokta bellek yönetimi. Bu aslında çok daha karmaşık bir konu çünkü idealde bellek yönetiminin programcı tarafında düşünülüp ince ayarına kadar programcı tarafından yönetilmesi gerekiyor. Fakat pratikte bu mümkün değil çünkü bayağı angarya bir iş ve hatalı bir bellek yönetimi kodu yazıldığında hatanın nerede yapıldığını tespit etmek inanılmaz zor. C ve C++'da bellek yönetimi tamamen programcıya bırakılmış durumda. Bu nedenle bu diller ana akım olarak çok karşımızı çıkmıyor :D . Modern C++ Smart Pointers ile bunu çözmeye çalışıyor ama aslında bu hafifte olsa bir yerde dile bir runtime yerleştirme anlamına geliyor. Yani kodun nasıl çalıştığı üzerindeki kontrolü biraz kaybediyoruz, dile bırakıyoruz. Bu yola girdik mi GoLang daha mantıklı bir tercih gibi duruyor. Rust bambaşka bir mantık izliyor. Bayağı dilin dayattığı şekilde çok kuralcı şekilde kodumuzu yazıyoruz. Bellek sızıntısı falan da olmuyor. Sıfırdan bir dil yazılsa nasıl olmalı diyeceksek karar vermek zor. GO ya da Rust'ın yolu tercih edilecek gibi duruyor ama hangisi ideal tartışılır. Rust'un modelinin daha "doğru" olduğunu kabul etmekle birlikte bence insanları programlamadan soğutmama adına GO'nun modeli tercih edilip taviz verilebilir :D . Bu bellek yönetimi konusu Java ve C#'ın kritik sistemlerde tercih edilmemesinin de sebebi. Çünkü otomatik bellek yönetimindeki çöp toplayıcı sistemler devreye girdiğinde çok kısa süre de olsa sistem yanıt vermez hale geliyor. Bu kritik sistemlerde kabul edilebilir görülmüyor. Farklı geliştirmeler var. Hiç bellek sızıntısı yapmadan da bu dillerde kod yazmak mümkün elbette, yeni çöp toplayıcılar bu anlık donmaları çok daha hissedilmez hale de getiriyor ama burada dillerin ve çalışma ortamlarının yamalı bohçaya döndüğünü kabul etmek gerekir.

Özetle genel amaçla programlama dili yazılacaksa async ve bellek yönetimini iyi halletmesi ve kolay sade bir söz dizimine sahip olması bence en temel gereksinim. Bunun dışında paket yöneticisi, interaktif Shell'i falan olsa tadından yenmez ama bunlar sonradan da eklenebilecek şeyler.
Kral puanın yarısını sana verdireceğim.
 
Çok zor bir dil, sadece çok zeki veya profesyonel insanların yapabileceği ve öğrenebileceği bir dil gelmesini isterdim. Böyle yapanların özel şirketlere alınması için şirketler yarış falan yapıyor.
Zor olması geniş kapsamlı, en iyi dillerden olması anlamına gelmiyor.

Mesela python;

print("Hello World!")

Mesela C++;

#include <iostream>
void main(){
std::cout << "Hello World!";
return 0;
}

Zor olması o dilin kullanışlı olması anlamına gelmez, o zaman hepimiz 0 ve 1 ile kod yazardık ve buda verimsiz, zor, uzun ve hata payı yüksek kodlar yazmamız anlamına gelirdi.
 

Geri
Yukarı