Yazılım mühendisliğini inşaat mühendisliği ile karşılaştırarak, farklı bir düşünce biçimini gözlemlememe şaşırdım: herhangi bir inşaat mühendisi, bahçede küçük bir kulübe inşa etmek istiyorsanız, sadece malzemeleri elde edip inşa etmeye devam ederken inşa etmek istediğini bilir. 10 katlı ev (veya, örneğin, gibi bir şey bu ) oldukça bazı matematik yapmak gerekir hiç ayrılacak olmayacağından emin olmak için.
Buna karşılık, bazı programcılar ile konuşmak veya blog ya da forum okumak çoğu zaman aşağı yukarı formüle edilebilecek geniş çapta bir görüş buluyorum: teori ve biçimsel yöntemler, programlama işlerin yapılmasıyla ilgili olarak matematikçiler / bilim adamları içindir .
Burada normal olarak ima edilen şey, programlamanın çok pratik bir şey olduğu ve biçimsel yöntemler, matematik, algoritma teorisi, temiz / tutarlı programlama dilleri, vb. İlginç konular olsa da, eğer herkes isterse bir şeyler elde etmek için sık sık gerekli olmadıklarıdır. bitti .
Tecrübelerime göre, 100 satırlık bir senaryo (kulübe) oluşturmak için çok fazla teoriye ihtiyacınız olmasa da, karmaşık bir uygulama (10 katlı bina) geliştirmek için yapılandırılmış bir tasarıma ihtiyacınız olduğunu söyleyebilirim. tanımlı yöntemler, iyi bir programlama dili, algoritmaları arayabileceğiniz iyi bir kitap, vb.
Yani IMO (doğru miktarda) teorisi işlerin yapılmasında kullanılan araçlardan biridir .
Sorum şu: neden bazı programcılar teori (biçimsel metotlar) ve pratik (bir şeylerin yapılması) arasında bir kontrast olduğunu düşünüyorlar?
Yazılım mühendisliği (bina yazılımı) , örneğin inşaat mühendisliği (bina evleri) ile karşılaştırıldığında çok kolay algılanıyor mu?
Yoksa bu iki disiplin gerçekten farklı mı (kritik görev yazılımı dışında, yazılım arızası bina arızasından çok daha kabul edilebilir)?
Şimdiye kadarki cevaplardan ne anladığımı özetlemeye çalışıyorum.
- Yazılım mühendisliğinin aksine, inşaat mühendisliğinde belirli bir görev için ne kadar teoriye (modelleme, tasarım) ihtiyaç duyulduğu çok açıktır.
- Bu, kısmen inşaat mühendisliğinin insanlık kadar eski olması ve yazılım mühendisliğinin yalnızca birkaç on yıl civarında olması nedeniyledir.
- Diğer bir neden ise, yazılımın daha değişken bir eser olması, daha esnek gereksinimler (çökmesine izin verilebilir), farklı pazarlama stratejileri (piyasaya hızlı bir şekilde ulaşmak için iyi tasarım feda edilebilir).
Sonuç olarak, yazılım mühendisliği için doğru miktarda tasarım / teoriye uygun olanı belirlemek çok daha zordur (çok az -> dağınık kod, çok fazla -> asla bitiremiyorum) çünkü genel bir kural yoktur ve sadece (çok) deneyim yardımcı olabilir.
Bu yüzden cevaplarınızı doğru yorumlarsam, ne kadar teoriye ihtiyaç duyulduğuna dair bu belirsizlik, bazı programcıların teoriye karşı duydukları karma aşk / nefret duygularına katkıda bulunuyor.