TypeScript'in popülaritesi son zamanlarda gerçekten patladı. TypeScript'i severim ve statik türleri severim. Bazı harika özellikleri var. Nominalden ziyade yapısaldır, yani temelde ad veya kimlik tabanlı tür denetimi yerine otomatik ördek yazımı gibi çalışır. Bu, JavaScript gibi dinamik diller için çok uygundur.
Sevmediğim şey, pek çok insanın TypeScript'in aslında çözemediği bir sorunu çözdüğünü düşünmesidir - en azından önemli ölçüde değil.
Ünlü pazarlama retoriği, "büyük ölçekli web uygulamaları statik türler olmadan zordur". Statik türlerin, tanıma atlama ve otomatik yeniden düzenleme gibi bazı gerçekten harika geliştirici araçlarına güç verdiği doğrudur ve bu araçlar bizi daha üretken hale getirdiklerini hissederler . (Ve aslında bizi daha üretken hale getirebilir , statik türlerin gerçek faydaları hakkında daha fazla çalışmaya ihtiyacımız var ).
Ancak birçok kişi, statik türlerin uygulamaya giren hata sayısını azaltmanıza yardımcı olduğuna inanıyor. Statik türlerin önemli bir hata alt sınıfını yakaladığı yadsınamaz bir şekilde doğru, ancak statik türlerin genel hata yoğunluğunu azalttığı gerçekten doğru mu?
Son zamanlarda yapılan birkaç çalışma , hata yoğunluğu sorusunu test etmek için GitHub'da bulunan zengin verileri kullandı ve sonuçlar… pekala… o kadar da sıcak değil, aslında:
"Kesin olmamakla birlikte, grafiklerdeki daha gelişmiş yazı tiplerinin bizi hatalardan kurtaracağına dair kanıt eksikliği çok rahatsız edici." - Daniel Lebrero, "The Broken Promise of Static Typing"
Statik türler , daha resmi bir çalışmada biraz daha iyi sonuç verdi: UC Davis'ten Baishakhi Ray, Daryl Posnett, Vladimir Filkov, Premkumar T Devanbu'dan "Github'da Programlama Dilleri ve Kod Kalitesi Üzerine Büyük Ölçekli Bir Çalışma":
"Veriler, işlevsel dillerin prosedürel dillerden daha iyi olduğunu gösteriyor; güçlü yazmanın zayıf yazmadan daha iyi olduğunu öne sürer; statik yazmanın dinamikten daha iyi olduğu; ve bu yönetilen bellek kullanımı, yönetilmeyenlerden daha iyi. "
Şimdi bu daha çok benziyor! Dışında:
“Bu ilişkiler istatistiksel olarak anlamlı olsa da , etkiler oldukça küçük. " [Vurgu eklendi.]
Aslında, statik tiplerin böcek yoğunluğu üzerinde güçlü bir etkisi olduğuna dair herhangi bir ampirik kanıtın farkında değilim.
Bu nedenle, etkinleştirdikleri harika geliştirici araçlarına rağmen, statik türler aslında genel hata yoğunluğunu çok fazla azaltmaya yardımcı olmaz. Neden?
Kodu kullanmadıysanız, çalışıp çalışmadığına dair hiçbir fikriniz yok. Elbette, bir değişkenin tanımlanıp tanımlanmadığını veya bir fonksiyonun bir nesne yerine bir dizi geçirip geçirmediğini bilebilirsiniz, ancak ortaya çıktığı gibi:
Test Güdümlü Geliştirme (TDD). Spesifik olarak, önce test metodolojisi.
TDD kurtarmaya.
TDD'nin etkileri üzerine bazı iyi çalışmalar yapılmıştır. Birkaç iyi meta çalışması ve Microsoft, IBM ve Springer'ın ünlü çalışması var . Springer çalışması, ilk test uygulamasını kullanmayan benzer projelere göre böcek yoğunluğunda% 40 -% 90 azalma gösterdi. Diğer pek çok çalışma benzer sonuçlar buldu , ilk önce testten sonra teste kadar ve hiç test yapılmadı.Önce test için hata yoğunluğunda etkileyici düşüşler (testten sonra önemli ölçüde daha iyi) çoğunlukla 40 aralığında düşüyor. % -% 80.
Başka bir deyişle, TDD, nakliye hatası yoğunluğunuzu etkili bir şekilde yarıya indirebilir ve bu iddiayı desteklemek için pek çok kanıt vardır.
Yine de statik türleri kullanmak isteyebilirsiniz, ancak statik türleri tercih edecekseniz, bunu gerçekten sağladıkları harika faydalar nedeniyle yapın, hata bulma yetenekleri nedeniyle değil .
TypeScript'ten, rtype üzerindeki birincil etkinin, standart JavaScript'i tamamlamak için tasarlanmış bir tür gösterimi olduğu konusunda yeterince etkilendim . Neden TypeScript kullanmadım?
TypeScript kullanarak büyük bir kod tabanı oluşturma konusunda endişeleniyorum, yalnızca ECMAScript spesifikasyonunun çakışan anahtar kelimeler ve "arayüz" ve "uygulamalar " gibi tür özellikleri sunması için .
TypeScript derleyicisini kullanmanın avantajı, bu olsa bile, farklılıkları derleyebilmenizdir. Dezavantajı, artık gerçekten standart JavaScript yazmamanızdır. TypeScript’in JavaScript’in üst kümesi olarak konumunu koruyamayacağını tahmin ediyorum. Yıllar içinde kaçınılmaz olarak farklılaşacağına inanıyorum.
Ve bu benim en büyük endişem, çünkü JavaScript öğretiyorum ve öğrettiklerimin çeşitli çerçeveler ve geliştirici araçları kullanarak çok sayıda geliştiriciye uygulanmasını istiyorum.
Muhtemelen bu endişeniz yok, ancak kod tabanınızın diğer geliştiricilerin öğrenmesi ve katkıda bulunması için hala kolay olması gerekiyor ve TypeScript kullanmayan bir takıma katılırsanız, bireysel olarak sizin de adapte olmanız gerekiyor.
Şu anda, hızla büyümesine rağmen, TypeScript, genel olarak JavaScript dilinin tamamına veya hatta jQuery'ye kıyasla küçük bir kullanıcı tabanına sahip, ancak etkileyici bir yörünge üzerinde. Zaten JavaScript için derleme alternatiflerine sağlıklı bir marjla hakim.
Bazı araçlar ödün vermeye değer. Şu anda benim için doğru değil, ama belki beğenirsin. Microsoft'un Code IDE'sinin TypeScript ile eşleşmesini deneyimlemediyseniz, lastikleri atmaya değer. Aşık olabilirsin.
Hata azaltma söz konusu olduğunda şunu söylemenin doğru olacağını düşünüyorum:
Statik türler abartılıyor.
Ancak diğer özellikler söz konusu olduğunda, statik türler hala harikadır ve yine de kullanmaya değer olabilir.
Sonuç olarak:
Hataları azaltmak mı istiyorsunuz? TDD kullanın. Kullanışlı kod zeka araçları mı istiyorsunuz? Statik türleri kullanın.
TDD kullanarak gerçek uygulamalar oluştururken yanıma av tüfeği oturmak ister misiniz?
Eric Elliott , "Programming JavaScript Applications" (O'Reilly) ve "Eric Elliott ile JavaScript Öğrenin " kitaplarının yazarıdır . Adobe Systems , Zumba Fitness , The Wall Street Journal , ESPN , BBC ve Usher , Frank Ocean , Metallica ve çok daha fazlası dahil olmak üzere en iyi kayıt sanatçılarının yazılım deneyimlerine katkıda bulunmuştur .
Zamanının çoğunu San Francisco Körfez Bölgesi'nde dünyanın en güzel kadınıyla geçiriyor.
Teknoloji dünyasında, işletmeler sürekli olarak siber suçluların şeytani faaliyetlerinin tuzağına düşme riski altındadır. Endişe verici derecede sık hale gelen böyle bir taktik, kimlik bilgilerini doldurmaktır.
Bir zamanlar bir blog yazmıştım… Ta 2016 yılının Temmuz ayında bir blog yazmaya başlamıştım. Bu blog.
Açık kaynaklı yazılım paketlerinde (log4j olarak) tespit edilen istismarlar, endüstriyi uygulamalardaki güvenlik açıklarını ve zayıflıkları izlemek, tespit etmek, önlemek ve onarmak için bir çözüm bulmaya yöneltti. Bu ihtiyaç, tüm yazılım geliştirme yaşam döngüsü ile ilgilidir ve hem kendi geliştirdiği hem de üçüncü taraf yazılım bileşenlerini içerir.
Yaratıcılık en çok aranan niteliklerden biridir ve istediğimiz şeylerin çoğunun sadece Google'da arama ve kopyala/yapıştır veya sohbet GPT'si kullanılarak yapılabileceği yerlerde önemi daha uygun olamazdı. Ama önce önyargıyı belirlememe izin verin.
The 3D Blockchain, Airdrop Incoming ve Mainnet is Live gibi gönderilerdeki CORE airdrop hakkındaki bilgilerin tümü aynı airdrop olayına atıfta bulunuyor. Bu gönderi, daha fazla ayrıntı sağlamanın yanı sıra bu bilgileri sentezler.