Bir dil hızla değişirse, bu iyi bir şey olarak kabul edilir mi?


14

Hızla değişen bazı diller gördüm (yani her yıl geliştirildiler) ve yavaş yavaş düzelen bazı diller gördüm.

Benim sorum, eğer bir dil hızla değişirse, bu programcı için iyi bir şey mi yoksa kötü bir şey mi? Programcılar dilde yeni şeyler öğrenmeyi sever mi yoksa zaten bildiklerine sadık kalmayı mı tercih ederler?


4
-1: Hiç cevap veremeyecek kadar belirsiz ve varsayımsal. "Çabuk" nedir? "Geliştirilmiş" nedir? Değişikliklerin tümü geriye dönük uyumluysa, bunun önemi nedir? Lütfen daha spesifik olmak için soruyu geliştirin. Hızla değişen somut bir dil yardımcı olabilir.
S.Lott

Eski programlar değişmeden çalışıyor mu?

4
Kesinlikle hiç değişmeyen ancak kütüphaneler olarak keyfi yeni özellikler eklemeye izin verecek kadar esnek bir dili tercih ediyorum. Monolitik çekirdeklerine gömülü tüm özelliklere sahip dev ve sakar diller çürümeye mahkumdur.
SK-logic

"Değişiklikler" ve "geriye dönük uyumluluk" tamamen farklı şeylerdir. İkincisi asıl mesele.
user16764

Yanıtlar:


16

bir dil hızla değişirse, bu programcı için iyi bir şey mi yoksa kötü bir şey mi?

İyi

  • Değişiklikler, daha az hata ile gelecekteki kodun yazılmasını kolaylaştıran bazı güzel sözdizimi şekerleri ekleyebilir
  • Değişiklikler, programcıların kendilerini uygulamak zorunda oldukları veya 3. taraflara güvendiği ortak bir deyim / tasarım modelini standart hale getirebilir.
  • Değişiklikler, dilin tipik olarak kullanıldığı teknolojilerle entegrasyonu kolaylaştırabilir
  • Değişiklikler yaygın hataların önlenmesine yardımcı olabilir
  • Değişiklikler tehlikeli programlama uygulamalarını reddedebilir veya ortadan kaldırabilir
  • Değişiklikler, eskiden uyguladığım veya üçüncü taraflara güvendiğim şeyler için dilin standart kütüphanesine faydalı eklemeler içerebilir.

Kötü

  • Dil karmaşıklık ekledi - yeni özellikler her zaman eski özelliklerle iyi çalışmayabilir (yani C ++ 'ın C ile ilişkisi)
  • Eski kod güncel olmayabilir ve artık dilin yeni sürümünde güncelleme yapılmadan çalışmayabilir (Python 2.x -> 3.x)
  • Dil için derleyiciler ve diğer araçların güncellenmesi gerekir. Şimdi potansiyel olarak birden fazla versiyon mevcut.
  • 3. taraf kütüphaneler dilin daha yeni sürümünü desteklemeyebilir
  • Bir standardın varlığına rağmen, yeni özellikleri uygulamak için standart / normal bir yol bulmak ve davranışlarının daha belirsiz durumlarını tanımlamak zaman alabilir.

Programcılar dilde yeni şeyler öğrenmeyi sever mi yoksa zaten bildiklerine sadık kalmayı mı tercih ederler?

Birçok programcı yeni özelliklerle oynayarak meraklarını tatmin etmenin keyfini çıkarıyor. Ancak bu, yeni özelliklerin üretim kodunda her zaman uygun olduğu anlamına gelmez. Bu, yeni özelliklerin yararlarını, kişinin özel durumunda yükseltme maliyetini karşılaştırması gereken tek tek bir karardır.

Eğlenebilir ya da yeni özellikleri öğrenmekten zevk alabilirim, ancak günün sonunda gerçekten önem verdiğim şey birine faydalı bir ürün sunmak. Makul destek ve istikrara sahip olacak kadar modern olacak ama makul derecede üretken olamayacağım kadar eski olmayan araç setini seçmeliyim.


C ++, C'nin evrimi değildir, bir şekilde C ile uyumlu yeni bir dildir.
Nikko

Çoğu insan C ++ 'ı düzgün kullanmaz, çünkü C gibi kullanırlar. Ve, C ++ düzgün kullanıldığında iğrenç derecede karmaşıktır ve tüm dil özelliklerini desteklemeyen bazı derleyicilerin geçmişine sahiptir.
sylvanaar

Kararlılık lehine bir başka önemli şey: Sertifikalı ortamlarla çalışırken, dil güncellemeleri önemli bir sorun olabilir. Sorun şu ki, küçük yama sürümü için bile, tüm sertifikasyon sürecinin her seferinde sıfırdan yapılması gerekiyor ve bu çok zaman alıcı.
Donal Fellows

@Nikko Kabul ediyorum, ancak C ile büyük ölçüde geriye dönük uyumlu, bu da çok eğlenceli problemler yaratıyor :)
Doug T.

11

İyileştirmeler harika ... eğer geriye dönük uyumlularsa .

C # bunu güzel yapıyor. Onlar şeyler lamdba ifadeler, multithreading, linq, daha iyi destek ekler ... Ama beş yaşındaki C # 2.0 program hala herhangi bir değişiklik gerek kalmadan güzel çalışır ve herhangi bir değişiklik gerekmeden kolayca C # 4.0 yükseltilebilir.

Yeni şeyler öğrenmek, görevlerinizi daha kolay ve daha hızlı bir şekilde yapmanıza izin veriyorsa harika. Bir saatlik öğrenme harcamak, saatlerinizi geliştirme süresinden tasarruf etmek anlamına geliyorsa, buna değer.


5

Düzenli iyileştirmeler istiyorum, ancak 500 kloc kod tabanını kırmak ve sadece kodun önceki sürümle olduğu gibi çalışmasını sağlamak için büyük bir "yükseltme projesi" tetiklemek istemiyorum.


4

Dil istikrarı, işletmeler ve geliştiriciler için bir zorunluluktur. Dilde yapılan değişiklikler, sorunları çözmeleri veya önceki sürümlerde kaçırılan özellikleri tanıtmaları durumunda hoş karşılanır, ancak dilleri modaya uygun olacak şekilde değiştirmek veya sadece bir rakibe yetişmek istediğiniz için iyi değildir.

Dil istikrarlı olduğunda, zaman içinde geliştiriciler dili öğrenmeye yönelik çabaları durdururlar, çünkü dil konusunda uzmanlaşırlar ve çabalarını bildikleriyle işletmeye hizmet etmeye odaklarlar. Sonuç daha kısa proje, mutlu son kullanıcılar ve daha gururlu geliştiriciler!

Değişim ayrıca öğrenme maliyeti ve zamanı ile birlikte gelir. Tüm işverenler geliştiricileri yeni özellikler konusunda eğitmek istemez. Bu, geliştiricilere kendilerini veya başkalarını eğitmeleri için önemli bir yük katıyor - Bu önemsiz değil, özel kursların her biri 1500-3500 $ olabilir!

Sürekli değişiklik, 'eski' yazılımdaki geliştiricileri kilitleyebilir. Şu andan itibaren 2 yıl içinde MVVM ile yakalanmayan ASP geliştiricisi veya WPF'yi öğrenmeyen bir Windows Forms geliştiricisi örneğini ele alın. Bu kilitleme geliştirici kariyerine önemli ölçüde zarar verebilir.

Fazla mesai, bir işletmedeki yazılım mimarisi bir bahçe salatası gibi görünmeye başlar. Her türlü araç ve sürüm ve herhangi bir iş kazancı olmadan yazılımı bir sürümden diğerine yükseltmek dışında hiçbir şey yapmaya başlayan projeler bulabilirsiniz.


2

Doğru bir cevap olduğunu sanmıyorum.

Genel olarak konuşursak, bir dil nispeten gençken, nispeten hızlı değişiklikler yapmak için daha fazla özgürlük vardır. Mevcut kodların kırılması için geniş bir taban yoktur, bu nedenle insanlar genellikle deneylere çok daha açıktır.

Dil yaşlandıkça, herkesin gerçekten umursamayacağı kadar geniş bir kullanıcı haline geldiğini varsayarsak, mevcut kodun temeli, hangi değişikliklerin yapılabileceği konusunda daha sıkı ve daha sıkı kısıtlamalar koymaya başlar. Daha fazla özellikten daha fazla kod yararlanmanın yanı sıra, hangi değişikliklerin kodu bozabileceğini tahmin etmek daha zordur, aynı zamanda insanların beklentileri de değişir.

Örneğin, Ruby ve Fortran'ı yazarken aynı sayıda insan olduğunu varsayalım. Dahası, her ikisinde de aynı miktarda kod olduğunu varsayalım. Her birinin tam olarak aynı yüzdesini (ve düzeltmek için aynı işi yapan bir şekilde) bozan bir değişikliğin Ruby kullanıcıları için genel bir kural olarak Fortran kullanıcılarından çok daha kabul edilebilir olma şansının oldukça iyi olduğunu söyleyebilirim. (en azından bunu bir gelişme olarak gördüklerini varsayarak).

Bence çok şey insanların başlangıçtaki dili algılamasına da bağlı. Bir dil seçin İnsanlar , çünkü 's "kesme kenarı" çok daha fazla olasılıkla o götürmek buysa, var olan bir sürü kod kırmak büyük değişiklikler katlanmak vardır tutmak kesme kenarında onu.

Diğer bir faktör, dilin amaçlandığı projelerin büyüklüğü ve yaşam beklentisidir. Nispeten küçük projelere hitap eden veya önceden bildiğimiz dillerin kısa bir yaşam beklentisi vardır (örneğin, bir web kullanıcı arayüzü), işleri nispeten sık kırmaktan kurtulabilir, çünkü birçok kişinin aynı kod tabanını kullanmaya devam etmesi olası değildir diyelim ki 10 yıl. İlk sürümün başlaması 5 yıl sürebilen daha büyük, daha uzun ömürlü projeler için daha fazlasını sunan bir dil (örneğin, C ++ veya Java), açık bir şekilde talep edilen üç veya dört yıl boyunca düzenli kullanımda (ve sürekli gelişimde) olabilir. bir harika bir anlaşma daha fazla istikrar.


2

Bana onun C ++ sevdiğini söyleyen bir adam vardı ve bu şekilde kalacak. D ile ilgilenmez veya ilgisi yoktur, C # bilmek veya kullanmak istemez. Java'yı öğrendi, çünkü yapması gereken birçok proje için OLDU ve görünüşte bildiği dillerde iyi bir iş çıkarıyor

Başka bir C # seviyor ve her anahtar kelime veya .NET 4 kütüphaneleri (async ve tüm) bilmiyor ve soyut anahtar kelimeleri veya kullanılan öznitelikleri kullanmamış.

Ben sadece çoğu insanın DONT CARE diyorum

Şimdi yükseltme etkileri kırılıyor (kütüphaneler veya derlenmiş kod için) insanlar umurumda.


C ++ "evrim" yeni norm olan C ++ 11'dir. "C #" veya "D" C ++ gelişmeleri değildir. Çünkü C ++, C'nin evrimi değildir.
Nikko

1
@Nikko: Ah ha. İyi bir nokta. Bildiğim C ++ programcılarının küçük bir avuç dışında hepsi C ++ 0x veya C ++ 11'i bile duydu. Şirket derleyicileri yükseltmedikçe ve onları yeterince merak eden bir şey görmedikçe o umurumda olmayacak ve özelliklere bakmayacağından eminim (umarım hareket bunlardan biridir)

@ acidzombie24: C ++ 'da uzun bir süredir programlıyorum (1995'ten beri) ve C ++ 11 ile ilgili ilk izlenimim, dile gerçek verimlilikten daha fazla karmaşıklık katması: dilin anlambilimi o kadar karmaşık hale geldi ki çok ince ve çok kolay tespit etmek çok kolay. Ve bunları düzeltmek için zamana mal olur, böylece üretkenliği azaltır. Yeni standardı gerçekten kullanmak zorunda kalırsam fikrimi değiştirebilirim, ancak bazı yeni özelliklere derinlemesine baktıktan sonra bile hissim o kadar gelişmedi.
Giorgio

0

C # için cevap vereceğim (ancak bu analiz Scala'ya da uygulanabilir):

Bu özellik değişikliği, bir dilin "stiline" yaklaşırken bazı sorunlara neden olur:

2011'de, C # birçok farklı şey yapabilir ve bu iyi. Ne yazık ki iki farklı paradigması var (daha fazla değilse):

  • OOP
  • Fonksiyonel (lambda fonksiyonlarını ve LINQ'u düşünün)

Farklı tip kontrol stilleri

  • Dinamik Yazma
  • Statik Yazma

Birini veya diğerini kullanmak istediğinizde her zaman net değildir.


0

Bence bu gerçekten dile ve dilin sahip olduğu şeye bağlı. Örneğin, C # ve Java, daha hızlı bir şekilde değişiklikleri kabul etmeye başlarsa, kabul edilebileceğini ( Carra'nın dediği gibi geriye dönük olarak uyumlu oldukları sürece ) düşünüyorum. Ancak, dil henüz çekilmemişse ve hala hızla değişiyorsa, bugün rahatsız olmayacağımı biliyorum, çünkü bugün öğrenmeye çalıştığım şeyin 6 ay içinde olanlardan tamamen farklı olması ve dil yeni / popüler olmadığından, sadece benim için geçmeme zarar vermezdi (oku: kariyerim).

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.