Bu hızlı video bloguna bakmak isteyebilirsiniz . Sonuç olarak, yapılandırılmış programlama ve OO programlama arasındaki fark, ekledikleri şeyle değil, programlamadan ne aldıklarıyla ilgilidir. Yapısal Programlama ve Nesneye Yönelik Programlama gibi yazılım disiplinleri kısıtlayıcıdır, etkinleştirmez. İşte bazı tanımlar. Uyarı: Onları sevmeyeceksiniz.
Yapısal programlama, goto üzerine uygulanan disiplindir (kontrolün doğrudan transferi)
OO programlama, işlevlere işaret eden disipline uygulanır (dolaylı kontrol transferi)
Fonksiyonel programlama, ödeve yüklenen bir disiplindir.
Birincisini anlamak çok zor değil. Dijkstra, algoritmalara gitmeye izin verildiğinde genel doğruluk kanıtları oluşturmanın imkansız olduğunu buldu. Kontrol yapıları dizisi, seçim ve yineleme ile sınırlı idi ancak, eğer, doğruluğu daha sonra deliller edildi mümkün. Tabii ki, günümüzde işleri doğrulamaya bile çalışmıyoruz, ancak yapılandırılmış programlamanın sadeliğini ve zarafetini seviyoruz.
OO'yu anlamak biraz daha zor. OO'yu sıklıkla kapsülleme, kalıtım ve polimorfizm olarak tanımlıyoruz. Ne bilir azdır bu özelliklerin üçü ulaşılabilir ve sık sık olmasıdır edildi O C. kapsüle sert aslında değil C'ye aşağı derlenmiş Ne de yapı zor olduğunu, Nitekim C. sadece bir önişlemci olarak başlayan C ++ elde miras simüle eden birbirlerinin alt kümeleri olan veri yapıları. Ancak polimorfizm biraz daha zordur. C'de iyi yönetilmesi zor olan işlevlere işaretçiler gerektirir. C ++ gibi dillerin bize verdiği bu işlevlere işaret eden disiplindi. C ++ derleyicisi bizim için vesileleri inşa etti ve katı bir formalizme göre içlerindeki göstergeleri başlattı. Yani gerçek anlamda OO sadece üzerine uygulanan bir disiplindir.dolaylı kontrol aktarımı yani göstericilerin işlevlere aktarılması.
Yapısal programlama konusunda ise değil goto kullanmak için. OO nasıl olduğunu değil işlevlerine işaretçileri kullanmak. Ve fonksiyonel programlama da ne yapılmaması gerektiği ile ilgilidir. Fonksiyonel programlamada, en sıkı kontrol edilen durumlar dışında değişkenler atamayız.
Sonuç olarak, tüm bu Programlama "teknolojileri" aslında teknolojileri etkinleştirmek yerine disiplinleri kısıtlamaktadır. Onlar bize ne anlatmak değil daha onlar ne bize başka yapacak hiç yok. Bu da yazılım geliştirmenin son 40 yılda büyümediği anlamına geliyor. Aksine, küçüldü. Biz her şeyi öğrendik gibi daha da kısıtlı hale edilir olmamalıdır yapmak.
Ne yapmamayı öğrenmek iyidir; ama burada rahatsız soru: yeni şeyler öğrendik var ne kadar do?