Yüksek ve yüksek programlama dillerinin artan kullanımı, bilgisayar mimarisi bilgisine sahip programcıların açığa çıkmasına neden olabilir mi?


15

"Üst düzey programlama dili" makalesinin Wikipedia'sından alıntı:

Üst düzey bir programlama dili, bilgisayarın ayrıntılarından güçlü soyutlamaya sahip bir programlama dilidir. Düşük seviyeli programlama dillerine kıyasla, doğal dil öğelerini kullanabilir, kullanımı daha kolay olabilir veya platformlar arasında daha taşınabilir olabilir. Bu diller, bellek erişim modelleri ve kapsam yönetimi gibi CPU işlemlerinin ayrıntılarını gizler.

Yani, programlama dili seviyesi arttıkça, programcı programın çalıştığı donanımdan uzaklaşır.

Şimdi seviyelerdeki dil kullanımlarının istatistiklerini bilmiyorum, ancak daha yüksek seviyeli dillerin daha düşük seviyeli dillerin yerini aldığından şüpheleniyorum. Eğer öyleyse, bu bilgisayar mimarisi bilgisine sahip programcıların açığa çıkmasına neden olabilir mi? Bu endüstri için bir sorun olur mu?

Yanıtlar:


16

Olabilir , ancak muhtemelen bir soruna yol açmaz.

Sadece ekonomi. İnsanların büyük çoğunluğu altta yatan mimariyi anlama yeteneğini kaybederse ve altta yatan mimariyi anlamak için hala çok büyük bir İHTİYAÇ varsa, o zaman iş yapanlar iş sahibi olacak ve daha fazla ödeme alacakken, sadece gerekli olmayan işler (ve hala daha fazla ödeme yapılabilir ... kim bilir?).

Bilmek yardımcı olur mu? Kesinlikle. Muhtemelen daha iyi olacaksın. Çoğu durumda gerekli mi? Hayır. Bu yüzden soyutlama o kadar büyük ki, kendimizin devi olmak zorunda kalmadan devlerin omuzlarında duruyoruz (ama her zaman devler olacak).


4
Ancak tüm soyutlamalar sızdı. Sızdıran soyutlamaları gidermek için gidilecek kişi olmak istiyorsanız, temel mimariyi bilmek şarttır.
dsimcha

5
@dsimcha, Kabul etti, ancak go-to guy olmak için "diğerlerinin" size gelmesi gerekiyor ;-) Herkes her şeyi bilmeye ihtiyaç duyarsa, soyutlama sefil bir şekilde başarısız oldu.
Preets

1
@Preets, Ve bu yüzden birçok soyutlama sefil bir şekilde başarısız oldu. Bir adamın var olması için yer olması bile, bir soyutlamanın zaten başarısız olduğunun kanıtıdır.
Pacerier

@Ryan, Aslında, dünyanın sızdıran soyutlama katmanları üzerindeki katmanlar nedeniyle ince böceklerle dolu uygulamalarla dolu olduğu bir soruna yol açacaktır. Sonsuz kaynaklara sahip Google gibi şirketlerin temel uygulamalarında hala hatalara sahip olabilmeleri yeterince şaşırtıcı .
Pacerier

3
@Pacerier google sonsuz kaynaklardan uzaktır ve birkaç büyüklük sırası olan uygulamaları karmaşık hale getirir ve birçok büyüklük sırasından oluşan kodları diğerlerinden daha fazla kod satırından oluşur. herkesin düşük seviyeli bilgisayar malzemelerini bilmeleri gerektiğini iddia ediyor çünkü tüm soyutlamalar sızdırabilir, herkesin alet kullanmadan sıfırdan nasıl bir ev inşa edileceğini bilmesi gerektiği gibi, çünkü bir fırtına gelip evlerini yıkabilir. bunun gibi kaynakları harcamak mümkün değil (veya akıllı).
sara

9

Bence de. Beni endişelendiren bir trend. Hiçbir soyutlama mükemmel değildir ; karmaşık bir sorunu basitleştirmenin mükemmel bir yolu olsaydı, orijinali çok hızlı bir şekilde değiştirirdi. (Bu geçmişte, bazen bilgisayarlarda ve fizik gibi geriye dönük uyumluluk konusunda endişelenmeyen diğer alanlarda çok daha sık oldu.)

Bunun anlamı, bir soyutlamayı her kullandığınızda, sizden sakladığı önemli bir karmaşıklık parçasıdır. Bunun ne olduğunu, neden orada olduğunu ve ne yaptığını bilmiyorsanız, yanlışlıkla büyük tren enkazları yazıyorsunuz ve onları nasıl düzelteceğinizi bilmiyorsunuz çünkü gerçekten neler olduğunu bilmiyorsunuz.

Sana başka türlü anlatmaya çalışan herkes ya yılan yağı satıyor ya da ciddi yazılım konusunda çok fazla deneyime sahip değil. İş yerinde, ABD'deki tüm TV ve radyo istasyonlarının iyi bir yüzdesini çalıştıran bir program üzerinde çalışıyorum. İstasyonlar ve ağlar büyüdükçe daha karmaşık hale geldikçe, küçük bir istasyon için bir ürün tasarlamak için iyi çalışan hızlı ve kirli teknikler, 50 istasyon ve 200 kanallı bir ağ için uygulandığında büyük teknik duvarlara çarpıyor! Dilin nasıl çalıştığına dair derin bir anlayış (ve ilk etapta etkili bir dil) ve veritabanının nasıl çalıştığına dair derin bir anlayış olmadan, kodlayıcılarımız ürün ölçeğini asla başarılı bir şekilde yapamazdı.

Bu da izole bir hikaye değil. Yazılım, daha basit değil, daha karmaşık hale gelmeye devam ediyor ve bu teknik uzmanlık düzeyinin kaybolan bir sanatın bir parçası haline geleceğinden ve yarının programlarının bugünkünden daha kötü olacağından korkuyorum.


5
"Çalıştığınız yerden bir katman aşağıya doğru soyutlamayı bilmeniz gerekir" şeklinde ifade edildiğini duydum. Aslında daha titizdi; hafızam kusurlu. Yani C veya Delphi'de çalışıyorsanız, montajın nasıl çalıştığını bilmelisiniz. Smalltalk veya Java'da çalışıyorsanız, VM'nizin nasıl çalıştığını bilmelisiniz. (Muhtemelen, montaj hakkında her zaman bir şeyler bilmelisiniz !) TCP ile çalışıyorsanız, IP'nin nasıl çalıştığını bilmelisiniz. Ve bunun gibi.
Frank Shearar

1
Yani, daha da ileriye götürebilirsiniz: neden sadece montajı bilmek yeterli olmalı? Bu, ikili CPU talimatları üzerinde sadece elle tutulan yüksek düzeyli bir soyutlamadır. fakat bekle! makine kodu? bu sadece bir soyutlama! mantık kapıları oluşturmak için CPU'nun transistörler kullanılarak nasıl inşa edildiğini öğrenmeniz gerekir! otobüs ve siciller. fakat bekle! transistörler? bu sadece belirli bir atom konfigürasyonu için bir soyutlamadır. ve atomlar kuantum alanlarındaki dalgalanmalar üzerinde bir soyutlamadır. Sonunda, bu sadece javascript:alert("Hello world")sicim teorisinde bir doktora gerektirir.
sara

1
@kai Biraz saçma oluyorsun . Çoğu uygulama için birkaç katmanı anlamanızın genellikle böyle olmadığı konusunda size katılıyorum . Ama biz uç vakalardan bahsediyoruz, her gün değil. Elbette, sıhhi tesisatın bulaşıkları yıkamak için nasıl çalıştığını bilmenize gerek yok. Ancak kirli su lavabonuzu doldurmaya başlarsa, düzeltmeye çalışmadan önce muhtemelen biraz hakkında bilgi edinmelisiniz. Ya da tekrar çalışana kadar ve suyun nereye gittiğini kimin umursaya kadar tahliyeye bir parça inşaat demiri koyabilirsiniz. (devamı ...)
DrewJordan

1
@DrewJordan benim açımdan: belli bir konu sınıfını bilmesi ve düzeltmesi gereken bir profesyonel değilseniz (veya sadece özel bir ilginiz varsa), o zaman iç işleri bilmeniz gerektiğini iddia etmek oldukça saçmadır. ve kullandığınız her aracın tuhaf incelikleri. Sadece mantıklı sonuca bakış açısını çizdim. Elbette, bir ethernet kablosunun nasıl kurulduğunu bilmek, internet bağlantınız başarısız olduğunda doğru araçlar verildiğinde yeni bir kablo oluşturmanıza izin verir, ancak yukarıdaki 20 katmanı çalışırken bilgi edinmeye zaman ve para harcamak sadece israftır.
sara

1
@DrewJordan Tabii ki SOMEONE'in tüm bunları bilmesi gerekiyor, böylece bir soyutlama bozulduğunda birisi bunu düzeltebilir, ancak soyutlamaların tüm NOKTASI, ayrıntıların bilinmesi gereken insanların sayısını en aza indirgemek ve böylece büyük çoğunluğun odaklanabilmesi işlerin yapılması. keyfi olarak, "çok düşük seviyeli" bir şeyin nereden geldiği çizgisini çizdiğinizde, sadece argümanum reklam absurdium'mda gösterildiği gibi, kişisel olarak çalıştığınız şeye bağlıdır (bu bir yanlışlık değildir, bilmenizi isterim!)
sara

5

Evet, insanların donanım ilerledikçe (ve benzer şekilde, talimatlar ilerledikçe) donanımı daha az anlayacağını düşünüyorum. Ancak diğer birçok yerde de belirtildiği gibi, günümüzde çoğu programdaki birincil kısıt CPU zamanı veya verimliliği değil, programcı zamanıdır. Eğer tasarım dilleri soyutlama verimli yapımında işlerini yapmaya devam ve insanların eğer insanlar doğru bu soyutlamalar kullanmaya devam, sonra bilgisayar mimarisi anlayışı tamamen gerekli değildir; en azından tam bir bilgi temel değildir bugünlerde iyi bir programcı olmak için .


2
Teorik olarak, evet, ama bunlar oldukça büyük birkaç ifs .
Mason Wheeler

1

Hayır, bilgisayar mimarisi bilgisine sahip programcıların açığa . Diller belirli bir alandaki sorunları çözmek için kullanılır. Belirli bir sorunu çözmek istiyorsanız, kaynaklarınız göz önüne alındığında uygun dili veya yeterince iyi dili kullanırsınız.

Gerçekte, hangi etki alanları bilgisayarın mimarisi hakkında bilgiye ihtiyaç duyar? Bunun belirli bir donanım mimarisine bağlı olması mı gerekiyor? İşletim sistemleri? Aygıt sürücüleri? Elbette, ancak o zaman bile bu tür kodların yalnızca belirli bölümlerinin belirli mimari bilgiye ihtiyacı vardır.

Performans iyileştirme? Evet, algoritmaların performansını artırmak için bilgisayarın mimarisi hakkındaki bilgileri uygulayabilirsiniz. Ancak diğer iki faktörün performans üzerinde daha büyük bir etkisi vardır: daha iyi algoritmaların kullanılması ve dilin çalışma zamanı ortamı hakkında bilgi.

Özünde, daha soyut programlama dilleri, bilgisayar mimarisinin ayrıntılarının gerekli olmadığı sorunları çözmektedir. Daha fazla sorunun çözülmesine izin verirler. Onları kullanan insanlar, makineye bağlı sorunları çözmek için kullanmıyorlar. Makineye bağlı sorunları çözmesi gereken kişiler, makine özellikli dilleri kullanmaya devam edecektir. Bu sıfır toplamlı bir sorun değil.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.