Sistemlerin karmaşıklığındaki artış amansız, baskıcı ve sonuçta sakattır. Eski nesil bir programcı olarak benim için de hayal kırıklığı yaratıyor.
40 yılı aşkın bir süredir programlama yapıyorum, 50-100 farklı dilde veya lehçede yazılı kod yazdım ve 5-10'da uzman oldum. Bu kadar çok hak iddia edebilmemin sebebi çoğunlukla tweaks ile aynı dilde olmaları. Tweaks, karmaşıklığı artırarak her dili biraz farklı kılıyor.
Aynı algoritmaları sayısız kere uyguladım: koleksiyonlar, dönüşümler, sıralama ve arama, kodlama / kod çözme, format / ayrıştırma, tamponlar ve dizgiler, aritmetik, hafıza, G / Ç. Her yeni uygulama karmaşıklık katar çünkü her biri sadece biraz farklıdır.
Web çerçeveleri ve mobil uygulamaların yüksek uçan trapez sanatçıları tarafından işlenen sihirleri, bu kadar kısa sürede nasıl çok güzel bir şey üretebileceklerini merak ediyorum. Sonra ne kadar bilmediklerini, veri veya iletişim ya da testler ya da iş parçacıkları veya ne işe yaramadıklarından önce ne olursa olsun öğrenmeleri gerekeceğini fark ediyorum.
Mesleğimi dördüncü kuşak diller çağında öğrendim, burada, yazma yazılımının tekrarlayan parçalarının giderek daha fazla ve daha fazlasını yakalamak için üst üste ve daha yüksek dillerin art arda üretileceğine gerçekten inandığımızı düşündüm. Bu tam olarak nasıl oldu?
Microsoft ve IBM, Windows ve OS / 2 için uygulamalar yazmak için C'ye dönerek bu fikri ortadan kaldırırken, dBase / Foxpro ve hatta Delphi ortadan kalktı. Ardından web, en son montaj dili üçlüsü ile tekrar yaptı: HTML, CSS ve JavaScript / DOM. Hepsi oradan yokuş aşağı oldu. Her zaman daha fazla dil ve daha fazla kitaplık ve daha fazla çerçeve ve daha fazla karmaşıklık.
Bunu farklı yapmamız gerektiğini biliyoruz. HTML yazmak zorunda kalmamak için CoffeeScript ve Dart, Less ve Sass hakkında, şablon hakkında bilgimiz var. Biliyoruz ve yine de yapıyoruz. Sızdıran soyutlamalarla dolu çerçevelerimiz var ve eğlenceyi gizlemiş olayları öğrenenlerin seçtiği birkaç kişi tarafından neler yapılabileceğini görüyoruz, ancak biz ve programlarımız geçmişte alınan kararlarla kapana kısıldık. Değiştirmek veya baştan başlamak çok karmaşık.
Sonuç, kolay olması gereken şeylerin kolay olmaması ve mümkün olması gereken şeylerin karmaşıklığı nedeniyle neredeyse imkansız olmasıdır. Belirlenmiş bir kod tabanında yeni bir özellik uygulamak için değişiklik yapmanın maliyetini tahmin edebilir ve haklı olacağımdan emin olabilirim. Tahmin edebilirim ama haklı çıkaramam ya da açıklayamam. Çok karmaşık.
Son sorunuza cevaben, genç programcılara mümkün olduğunca yüksek katman pastasından başlayabilmelerini ve sadece ihtiyaç ve arzuların ivme sağladığı için alt tabakalara dalmalarını şiddetle tavsiye ediyorum. Tercihim, döngüleri olmayan, çok az dallı ya da dalsız ve açık durumlu diller içindir. Lisp ve Haskell akla geldi. Uygulamada her zaman C # / Java, Ruby, Javascript, Python ve SQL ile bitirdim çünkü topluluklar burada.
Son sözler: karmaşıklık en büyük düşmandır! Bunu yendi ve hayat basitleşir.