Kaynak: http://paulgraham.com/weird.html
Yazar: Paul Graham
Çeviren: Furkan Yeşilyurt
Ağustos 2021
İnsanlar, deneyimlerinde tüm programlama dillerinin temelde eşdeğer olduğunu söylediğinde, diller hakkında değil, yaptıkları programlama türü hakkında bir açıklama yapıyorlar.
Programlamanın %99,5'i, kütüphane fonksiyonlarına yapılan çağrıların birbirine yapıştırılmasından oluşur. Tüm popüler diller bu konuda eşit derecede iyidir. Böylece bir kişi tüm kariyerini popüler programlama dillerinin kesişiminde çalışarak kolayca geçirebilir.
Ancak programlamanın diğer % 0,5'i orantısız bir şekilde ilginçtir. Nelerden oluştuğunu öğrenmek istiyorsanız, garip dillerin tuhaflığı takip etmeniz için iyi bir ipucu.
Garip diller tesadüfen garip değildir. En azından iyi olanları değil. İyi olanların tuhaflığı, genellikle sadece kütüphane çağrılarının birbirine yapıştırılmasından ibaret olmayan bir çeşit programlamanın varlığını ima eder.
Somut bir örnek: Lisp makroları. Lisp makroları, birçok Lisp programcısı için bile tuhaf görünüyor. Sadece popüler dillerin kesişme noktasında değiller, aynı zamanda doğaları gereği bir dili Lisp'in bir lehçesine dönüştürmeden düzgün bir şekilde uygulamak zor olurdu. Ve makrolar kesinlikle tutkal programlamanın ötesine geçen tekniklerin kanıtıdır. Örneğin; bu tür problemler için bir dil yazmak ve ardından özel uygulamanızı bu dilin içine yazarak problemleri çözmek. Makrolarla yapabileceğiniz tek şey bu da değil; Bu, şu anda bile tam olarak keşfedilmemiş olan program manipülasyon teknikleri alanında yalnızca bir bölgedir.
Dolayısıyla, programlamanın ne olabileceğine dair konseptinizi genişletmek istiyorsanız, bunu yapmanın bir yolu garip diller öğrenmektir. Çoğu programcının tuhaf bulduğu ancak ortanca kullanıcısı akıllı olan bir dil seçin ve ardından bu dil ile popüler dillerin kesişimi arasındaki farklara odaklanın. Bu dilde, diğerlerinde söylemesi inanılmaz derecede sakıncalı olacak ne söyleyebilirsiniz? Daha önce söyleyemediğin şeyleri nasıl söyleyeceğini öğrendiğin süreçte, muhtemelen daha önce düşünemediğin şeyleri nasıl düşüneceğini öğreniyor olacaksın.
August 2021
When people say that in their experience all programming languages are basically equivalent, they're making a statement not about languages but about the kind of programming they've done.
99.5% of programming consists of gluing together calls to library functions. All popular languages are equally good at this. So one can easily spend one's whole career operating in the intersection of popular programming languages.
But the other .5% of programming is disproportionately interesting. If you want to learn what it consists of, the weirdness of weird languages is a good clue to follow.
Weird languages aren't weird by accident. Not the good ones, at least. The weirdness of the good ones usually implies the existence of some form of programming that's not just the usual gluing together of library calls.
A concrete example: Lisp macros. Lisp macros seem weird even to many Lisp programmers. They're not only not in the intersection of popular languages, but by their nature would be hard to implement properly in a language without turning it into a dialect of Lisp. And macros are definitely evidence of techniques that go beyond glue programming. For example, solving problems by first writing a language for problems of that type, and then writing your specific application in it. Nor is this all you can do with macros; it's just one region in a space of program-manipulating techniques that even now is far from fully explored.
So if you want to expand your concept of what programming can be, one way to do it is by learning weird languages. Pick a language that most programmers consider weird but whose median user is smart, and then focus on the differences between this language and the intersection of popular languages. What can you say in this language that would be impossibly inconvenient to say in others? In the process of learning how to say things you couldn't previously say, you'll probably be learning how to think things you couldn't previously think.
Thanks to Trevor Blackwell, Patrick Collison, Daniel Gackle, Amjad Masad, and Robert Morris for reading drafts of this.