Programdaki comment ve boş satırları çeksek dahi 29 satır ayrıca hatalı ve eksiklerle dolu örneğin TL'yi hardcoded basıyor, fakat onu kullanıcıdan almalı. Kullanıcı belki u.arası para transferinde kullanılan TRY birimini kullanmak isteyecek.
Değişken ismi olarak l l1 l2 yerine list list1 list2 olmalı veya hadi li li2 li2 olsun.
len fonksiyonu külliyen yanlış. 'length' değişkeni tanımlanamaz cunku o Scheme de ön tanımlı bi fonksiyon örneğin (length '(a b c)) ; -> 3 döndürür.
len fonksiyonundaki (cdr list) '() ye eşitse değişken tanımlamak gereksiz. fonksiyonun altında (len 0 hebele) ile hebele nin uzunluğunu sıfırlamak da poor programming practice (tam türkçesi yok)
retn fonksiyonunu tanımlamak da gereksiz cunku Scheme'de o iş 'list-ref' fonksiyonuyla yapılıyor örneğin (list-ref l n) , l'deki n. indexteki elemana ulaşır (n 0 tabanlı)
printleyici fonksiyonu sonuçta list1 ve list2 deki karşılıklı degerleri çarparak basacak, bunu 'and' koşulu altında rekürsif şekilde yapmaya calışınca alttaki parantezleri son satıra alsak bile 12 satır uzunluğunda tam bir felaket. Scheme'in rekürsif özelliğini kullanmak istiyorsan programın genelinde kullanman daha iyi olur, şunun gibi:
Bu programı (hesapla hebele hubele "TL") şeklinde çalıştırırsan çalışır. format içindeki ~f0 ifadesini sadece Cisco'nun Scheme yorumlayıcısı tanır. MIT Scheme veya başka bir yorumlayıcı kullanıyorsan onu ~a ile değiştir.
Rekürsif 6 satır süren bu programı iterasyon ile yazmak sadece 3 satır:
(define (hesapla maas artis birim) (do ((x 0 (+ x 1))) ((equal? x (length maas)) 'ok) (format #t "Maaş:~a Yeni:~a~a~n" (list-ref maas x) (* (list-ref maas x) (list-ref artis x)) birim)))
+ bile fonksiyon olabiliyor cunku Scheme'de + C veya Python'daki gibi toplama operatörü olarak tanımlı değil. Kodda iterasyonu gerçekleştiren 'do' ise fonksiyon gibi görünmekle birlikte, fonksiyon değil. Scheme'de yeni syntax tanımlamayı sağlayan 'define-syntax' ile tanımlanmış bir makro :) Makro derken C'deki makrolar gibi sadece değişkenleri yerine koyan basit birşey değil, gerçekten dilin bir parçası gibi çalışan makro. do makrosu örneğin orada dilin bir parçası gibi çalışıyor.
Scheme'deki bu yapıyı bir kez öğrenince program yazmak cok kolaylaştığı gibi kısa ve öz programlar ortaya cıkıyor.
Hocam sıfırdan web tasarımına başlamak için ne öğrenmek lazım bazı kişiler direk başlangıç olarak html5 öğrenmemi söylüyorlar daha önce yazılıma dair bildiğim hiç birşey yok nasıl başlarım bir yol haritası arıyorum.
HTML5 öğrenmekten cok HTML ile idealindeki bir tasarımı uygula, bunun için Static Site Generator (son yıllarda birçok değişik SSG geliştirildi) kullanabilirsin, ilk başta Django yada WordPress kasar. Sonuçta hiçten başlayarak tümünü kendin yaptığın bir referans projen olmalı.
Bu mesajda bahsedilenler: @vonderplanitz @Oğuzhaan