"Komut dosyası dili" son derece modası geçmiş veya en iyi etki alanına özgü diller sınıfına uyan korkunç bir kelime. Öğretmeniniz, yeterince anlamadığı her şeyi açıkça bir kötülük eksenine hizalar.
Makul bir ayrım, yüksek seviyeli diller ile düşük seviyeli diller arasında veya gerçekten dikey olan statik ve dinamik olarak yazılmış diller arasındadır.
Assembler düşük seviyeli dinamik olarak yazılır (türlerden bahsetmek herhangi bir anlam ifade ediyorsa) C düşük seviyeli statik yazılır, Ruby yüksek seviyeli dinamik yazılır, Haskell yüksek seviyeli statik yazılır. Java ne yüksek ne de düşük düzeyde statik olarak yazılmıştır, C ++ hem yüksek hem de düşük düzeyde statik olarak yazılmıştır. Ve bunun gibi.
Tartışma sadece bir giriş seviyesi programcısı için hangi paradigmaların daha uygun olduğu olabilir.
Düşük seviyeli programlamanın muhtemelen bir tane olmadığına ikna oldum. 90'lı yılların başlarında, onunla makul zamanda ilginç sonuçlar elde edebileceğiniz bir zaman olabilirdi.
Ancak programlama tutkuyla beslenir. Tutku ödüller ile beslenir. Bu nedenle, giriş seviyesi programcıları ödüllendirme araçlarıyla başlamalıdır. Düşük seviyeli araçlar artık ödüllendirici değildir, çünkü size aynı sonucu zamanın bir kısmında elde eden yüksek seviyeli araçlardan oluşan geniş bir deniz vardır.
İnsan düşüncesi soyuttur. Dünyayı anlamayı öğrendikçe, bunu çok kaba taneli soyutlamalar ile yapıyoruz ve gerektiğinde ayrıntıya giriyoruz.
Bir çocuğun çevresini anlaması için ona matematik, sonra fizik, sonra kimya, sonra biyoloji, sonra tarih, sosyoloji ve felsefe öğretmeyeceksiniz. Dünyayla başa çıkmak için çok basit bir model veriyorsunuz ve kendi başına geçmesi çok uzun sürüyor, gençken size sonsuzca sorular soruyor ve daha sonra otoritenizi tamamen reddediyorsunuz.
Biz böyle düşünüyoruz. İnsan beyni sadece sınırlı miktarda bilgi "birimi" işleyebilir, ancak soyutluk derecesi bilginin nicelendirilmesinde çok az önemlidir. Örneğin: '34 * 75 'ifadesini bize okumak bizim için hesaplamaktan daha kolaydır, oysa bilgisayarlar için bunun tersi de geçerlidir. Bir grup siyah pikseli kıvrımlı bir çizgiye tanımak (ve böylece soyutlamak), daha sonra bireysel bir basamak olarak tanınabilen (ve yine de soyutlanabilen) muazzam bir iştir.
Büyükannem bir dosya açma fikrini anlıyor. Ancak bu seviyenin altında bir anlayışı yok. Ve açıkçası, bunu önce donanımın ve işletim sisteminin iç işleyişini ve neyin olmadığını inceleyerek öğrenmek zorunda olsaydı, oraya asla ulaşamazdı.
Dışarıda bir şeyleri aşırı karmaşıklaştıran birçok insan var, çünkü asla net, özlü ve dolayısıyla zarif çözümler açısından düşünülmeleri öğretilmiyordu, ancak değiştirilebilir düşük seviyeli detaylarla uğraşmak ve bunlara karşı sorunları çözmek için çok fazla zaman harcadılar. İnsanlara bilgisayar gibi düşünmeyi öğretmek, programlamaya mümkün olan en kötü yaklaşımdır.
Programlamanın değeri, bir soruna çözüm bulmaktır. Kod olarak ifade etmek gerçekten daha sıkıcı, mekanik bir iştir ve sadece uygun olan her şeyle yapılmalıdır.
Oh, ve işaretçileri anlamadığınız için endişelenmeyin. Aynı yaşta aynı sorunu yaşadım. Buradaki sorun aynı zamanda soyutlama eksikliğidir. Klasik olarak bazı C kitaplarından işaretçiler hakkında bilgi sahibi olursunuz ve bunları anlamak için uğraşırken, bu, bellek ayırma ve böylece yığın ve yığın bellek ve benzeri ile el ele gider. Göstergelerin arkasındaki soyut kavram dolaylıdır. Bir dizini belirli bir dizinin içinde tutan bir değişken sadece (aslında belirli dizinin adres alanınız olduğu C'de aynıdır) ve bunun için işaretçi aritmetiğine ihtiyacınız yoktur.
Bu sadece açıklamak içindir ki, yüksek düzeyde soyutlamalar seçmenin işleri kavramasını çok daha kolay hale getirir.
EDIT: ve söz konusu olduğunda, statik olarak yazılan dilleri tercih ederim. Bence giriş seviyesi programcılar tür kavramını (soyut olan) açıkça anlamalıdırlar.