Neden Java, JavaScript, Ruby'yi terk ediyorum ve yeni programlama dilleri arıyorum?

Programlama dillerini seviyorum. Her dilin kendine has özellikleri vardır. Son zamanlarda, bir soruyla uğraşmaya başladım: Kendi projeme başlarsam hangi dili kullanmalıyım.

Birçok mükemmel programlama dili

Bu makaleyi okumadan önce birkaç şeyin açıklanması gerekiyor. İşlerimin çoğu için ürün uygulamaları oluşturmak için Java, JavaScript ve Ruby kullansam da, yeni diller ve çerçeveler öğreniyorum. Dilin ve dilin (veya çerçevenin) belirli topluluğunun size yeni fikirler getirebileceğine ve bu fikirlerin er ya da geç faydalı olacağına inanıyorum: işlevsel programlama size çok sayıda nesne yönelimli programlama bilgisi getirebilir ve tam zamanlı Rails uygulamaları, Size çok fazla test deneyimi sunar (testler yazarsanız). Ancak sorun şu ki, her dilin tüm mükemmel kavramlarını öğrenmek istiyorsanız, sonunda çeşitli mükemmel özelliklerde kaybolacaksınız.

Bir diğer önemli nokta da konsolu kullanıyor olmam. Bilgisayar kullandığım çoğu zaman tarayıcı ve konsolu kullanıyorum. Evet, programlama için Vim kullanıyorum. Boş değerler içermeyen tip sistemini severim (isteğe bağlı türleri severim), bu tip sistem çok güçlüdür. Bu yüzden Java'nın tip sistemini sevmiyorum, ancak kullandığım en son sürüm sadece Java 6, bu yüzden büyük olasılıkla şu anda işler farklı! Java'nın tür sistemi tam olarak Ruby'yi denedim, çünkü Ruby topluluğu her zaman onlarla Java arasındaki farktan bahsediyor. Java kodu yazarsam, derleyicinin benim için yapması yerine aslında derleyicinin işi yapmasına yardımcı oluyorum.

Söylemek istediğim son şey, aradığım dil aradığınız dil olmayabilir! Bu yazımda son aylarda iş ve kişisel projelerde kullandığım bazı dilleri tanıtacağım.

Yakut

Ruby'yi çok seviyorum. Ruby çok güçlü bir açıklayıcı dildir. Uygulamaları hızlı bir şekilde oluşturmanıza yardımcı olabilecek birçok olgun işlev kitaplığı ("taşlar" -gems olarak adlandırılır) vardır. Raylar çok olgun ve kullanımı çok kolay. Test, topluluk içinde diğer dillerden daha bütünleşiktir. Ruby tamamen nesne yönelimli bir dildir, bu nedenle hangi kitaplığı kullanırsanız kullanın, çoğu kod aynı API stiline, yani sınıf API'sine sahiptir. Topluluk da çok güçlü. Ruby geliştiricileri her seferinde kendi kitaplıklarını yazmak yerine var olan kitaplığa kodla katkıda bulunuyor gibi görünüyor (örneğin, yaygın olarak dolaşan ActiveRecord ve Sequel iyi örneklerdir). Bu fikir birliği, insanların kitaplığı genişletmelerine yardımcı olur ve örneklerden biri Rails Admin gemidir.

Ruby, hız açısından en hızlı değil. Konuşlandırmalar genellikle ağırdır ve yüklenmesi uzun zaman alır. Ruby kullanmak çok keyiflidir, ancak gerçekte Rails uygulamalarını çalıştırmak, özellikle Heroku, AWS ECS gibi "sunucusuz" konteyner platformlarında çok fazla zaman ve çok maliyet gerektirir, çünkü çok fazla bellek, disk alanı, trafik ve başlatma gerektirir Zaman ve bunlar ekstra paraya mal olacak. Rails'i yerel olarak çalıştırmak tamamen iyidir ve Bundler da çok kullanışlıdır, ancak bazen "çalışırken yeniden yükleme" mekanizması sorunlara neden olabilir.

JavaScript

JavaScript'i de seviyorum. Ön uç çalışmalarının büyük çoğunluğu Web üzerindedir, çünkü herkesin bir tarayıcısı vardır, bu nedenle yayınlamak kolaydır. Bu yüzden diğer dilleri kullanmak çok garip bir şey gibi görünüyor: "Neden iki kişi işe almalı?" JavaScript'in öğrenmesi de kolaydır ve geniş çapta yayılmış ve öğrenmesi kolay olduğu için JavaScript kullanmanın temelde yanlış bir tarafı yoktur. Prototipleri bu basit dilde uygulamak çok kolaydır, doğrudan düğüm komut satırı ortamını başlatabilir veya doğrudan devtools'u açabilirsiniz! Çok kullanışlıdırlar, web'i geliştiren herkes bunları bilir, bu yüzden birçok geliştiriciniz var! Harika.

Wix'te kullandığımız ana dilin bu olmasına şaşmamalı.

Ancak JS'nin de sorunları var. Npm modülünün durumu JS'nin durumu ile aynı değildir. Topluluk, kitaplıklar ve diğer şeyler gibi tür sistemine (Akışa karşı TS) bölünmüştür. Benim de kendi tercihlerim var, bu yüzden ... Topluluğun bir parçası olduğumu hissediyorum. Bu "topluluk seçimi" eksikliğinin sonucu, npm'de birçok modül olmasına rağmen, çoğunun olgunlaşmamış olmasıdır. Birkaç yıl önce JavaScript'i tam olarak kullandıktan birkaç yıl sonra Ruby'ye döndüğüm hakkında bir makale yazdım. Ben buna "gerileme" diyorum.

Swift

Son zamanlarda iOS geliştirme için Swift öğrenmeye başladım. Daha önce bunun hakkında hiçbir şey bilmiyordum, çünkü tek bildiğim bir React uygulamasının nasıl oluşturulacağıydı. Bu bir sorun olmasa da, yeni bir şey denemek istiyorum.

Swift, statik olarak yazılmış derlenmiş bir dildir. Başlangıçta Apple ekosisteminde uygulama geliştirme için kullanılıyordu, ancak açık kaynaklıdır ve artık Linux'ta yürütülebilir dosyalar geliştirmek için de kullanılabilir. Tanıdığım en üretken NPM yazarlarından biri olan Sindre Sorhus, daha fazla Swift çalışması yapmak istediğini söyledi. Onu tamamen anlıyorum! Swift'in hızlı başlatma süresi ve kullanımı kolay derleme süreci, daha az ve daha az çalışma zamanı hatası sağlayabilir. Ve NULL değerine sahip değildir, ancak İsteğe Bağlı bir türü vardır. Atmadan önce, işlevin ne atacağını açıkça belirtmelisiniz, ancak Java'nın yaptığı gibi fırlatma bildirimleri yoluyla yapılmaz, ancak "deneyin, başarısız olursa, isteğe bağlı vardır" gibi çok akıllı bir sözdizimsel şeker vardır. Swift numaralandırma türleri ile mükemmel işbirliği sayesinde desen eşleştirme çok güçlü hale gelir. Tip çıkarımı da var, yöntem tanımlarında kullanılamasa da büyük bir problem olmayacağını düşünüyorum. Ne harika bir dil!

Ama Swift neden son seçimim değil? Çünkü Swift, yalnızca XCode'da kullanım için uygundur. Genellikle Vim kullanırım ve diğer editörler kendilerini çok yetersiz hissederler. VSCode ve Atom'u denedim, ancak çok iyi değiller. Belki sonunda, geliştirme deneyimini iyileştirmek için editör eklentileri yazmama yardımcı olabilecek bir Swift CLI aracı yazacağım, ancak en azından bu şey henüz mevcut değil. Swift ayrıca statik derlemeye sahip değildir, bu nedenle komut satırı programlarını kullanmak için Swift'i ayarlamanız gerekir. Mac uygulamaları için bu bir sorun değil, ancak bir Linux sunucusunda, derlenmiş ikilinin her şeyi içermesini istiyorum.

ReasonML

Facebook'un OCaml için yaptığı bu yepyeni grameri gerçekten çok seviyorum. Tüm alet zinciri çok olgun ve mükemmel hissediyor. OCaml'ın paket yöneticisi OPAM ifadelerle birlikte gelir, bu da bu çok eski görünen aracın aslında o kadar da eski görünmemesini sağlar. Merlin ve OCaml / Reason dil sunucuları da çok iyi ve Vim ile iyi çalışıyorlar. Ayrıca mükemmel çalışan bir otomatik tamamlama motoruna (!), Tanıma atlamaya, fare üzerine gelme türü tanımına ve daha fazla işleve sahiptir. Mükemmel geliştirme araçları, bir dil için çok iyi olan düzenleyiciden ayrılmıştır.

Reason, BuckleScirpot ile JS'de derlenebilir, böylece Reason / OCaml kodu yüksek performanslı JS koduna dönüştürülebilir. Bu çok iyi, çünkü JS'ye eşdeğer bir tip sistemi var, ayrıca JS fonksiyon kitaplığının keyfini çıkarabilirsiniz. Bu çok hoşuma gitti. Aslında, hoşlanmadığım tek şey, bağımlılıkları kullanmak için çok sayıda tür tanımı oluşturmam gerektiğidir, ancak genellikle bu bir sorun değildir: tüm modülü modellememiz gerekmez, yalnızca girdileri, çıktıları ve kullanılan belirli işlevleri ve sınıfları modellememiz gerekir. Ve yöntem modelleme. Akıl tamamen işlevsel olmadığından (yan etkilerle), bence Akıl, JS'de derlenebilecek en iyi dildir.

Sebep ayrıca bayt kodu veya yerel koda da derlenebilir. Saf OCaml / Reason kullanılması, derleyici geçtiği sürece çalışma zamanı hatası olmayacağı, ayrıca statik olarak derlenebileceği, çok küçük ikili dosyalar oluşturabileceği ve hızlı bir şekilde başlayabileceği anlamına gelir. Ve çok hızlı derlenir!

OCaml alet zinciri çok hızlı!

Yerel bir Reason uygulamasını denerken karşılaştığım en büyük sorun, başkalarının ne yaptığını ve kitaplığı nasıl kullandıklarını bilmememdi. Çoğu kişi OCaml kullanıyor, ancak OCaml ve Reason birbirinin yerine kullanılabildiğinden, OCaml'i Reason olarak okumak için Chrome uzantısını kullanabilirim. Ama yine de belirsiz. Bazı OCaml kodları, belki de Chrome eklentisindeki PPX eksikliğinden dolayı Reason'a dönüştürülemez. Anladığıma göre, PPX bir tür sözdizimi uzantısıdır, temelde kodu bir sözdiziminden diğerine dönüştüren bazı makrolardır. Babel eklentisi veya benzeri bir şey olarak anlaşılabilir. Yerel Reason / OCaml çoklu çekirdeği desteklemez, ancak eşzamanlılık elde etmek istiyorsanız, Promise'a benzer bir kitaplık olan Lwt'yi kullanabilirsiniz. Ama Lwt için bir rehber veya makale bile bulamadım!

Dahası, yerel OCaml / Reason gelişimi için bile, giriş engellerinin çok yüksek olduğu ve çok üzücü olduğu görülmektedir. Topluluk soruları yanıtlamaz veya bilgiyi paylaşmaz. Çoğu durumda, soru soran kişiden kaynak koduna veya mazeretlere bakması istenir, ancak bunun sonunda değişeceğine inanıyorum çünkü bu JS geliştirmenin sadece başlangıcı.

Golang

Go çok güzel bir dil. CSP aracılığıyla programın ve basit eşzamanlılığın yanı sıra hızlı bir şekilde öğrenilmesi, derlenmesi ve çalıştırılması kolaydır. Birden çok çekirdeği destekler ve en özlü Linux'ta hızla başlatılabilen statik ikili dosyaları derleyebilir. Değişken tanımında tür çıkarımı vardır, ancak işlev tanımında yoktur. Arayüzleri destekler ve iyi bir temele sahip profesyonel bir topluluktan geliyormuş gibi görünür.

Aslında, Docker, Kubernetes, CockroachDB gibi birçok çok güçlü modül ve uygulama Go'da yazılmıştır; bu, bu ikili dosyaları küçük ve basit bir dağıtım (örneğin,) elde etmek için altyapının bir parçası olarak kullanabileceğiniz anlamına gelir. Raspberry Pi'de). Bu çok güçlüdür.

Herkese açık veri yapıları (grafikler, ağaçlar vb.) Ve algoritmalar açısından, jenerikleri yoktur (belki bir sonraki sürümde eklenecektir) Bence bu garip: her seferinde aynı kodu yazmalı veya kod kullanmalısınız Generation, kullanılabilmesine rağmen, umarım derleyici tüm bunları başarmama yardımcı olabilir. Dahası, modül sistemi VGO'yu tam olarak anlamıyorum, ancak topluluk buna daha aşina oldukça, gelecekte daha fazla bilgi ve daha basit rehberler olacağını tahmin ediyorum. Son bir kişisel görüş, bence dilin kendisi çok temiz değil. Bunun bir dili kullanmamak için bir sebep olmadığını biliyorum ama en azından tamamen test etmeyeceğim veya kişisel projelerde kullanmayacağım. Go dilinin kendisi ilginç değil. Basit, sıkıcı ve güzel. Sonunda onu resmi bir sistemde kullanacağım ve ona aşık olacağıma inanıyorum. İnsanların zevkleri değişecek!

Kristal

Bu makale Ruby ile başladı, öyleyse Crystal ile bitirelim.

Crystal çok yeni bir dildir, henüz 1.0 sürümüne ulaşmamıştır. Ruby'ye çok benziyor, ancak derlenmiş, statik olarak yazılmış ve hızlı bir dildir! Ruby gibi OOP'yi destekler ve tür çıkarımı, optinoal tipler, eşzamanlılık için CSP ve biraz Golang'ın codegen gibi derleme zamanı makroları gibi birçok iyi özelliğe sahiptir, ancak derleyicisinin kendisi onu destekler. Crystal, Lucky ve Amber gibi birkaç yeni web çerçevesine sahiptir. Bir de Kemal var Sinatra olsa da Kristal üzerine de kullanılabilir. Ayrıca ORM de vardır ve Crystal yeniden düzenlenmiş Ruby (Elixir ile bazı değişikliklerle) olduğundan, ORM API'sinin Ruby ile neredeyse aynı olduğunu ve aynı zamanda güvenli olduğunu göreceksiniz. Bu çok önemli!

Bu dil hala çok genç olduğu için ürünlerde kullanılması biraz zaman alacaktır. Crystal'in eşzamanlılığını seviyorum.Tıpkı Go gibi tüm çekirdekleri kullanabilir, ancak Crystal'ın manuel olarak çatallanmasına gerek yoktur. Ayrıca bir istisna atmasını ve sonuç türünü döndürmesini de seviyorum, böylece hata işleme açıkça yapılabilir. Numaralandırmanın Swift ve OCaml gibi kullanılabilmesi için kendi değerine sahip olmasını istiyorum. Daha iyi düzenleyici desteği de gereklidir Otomatik tamamlama ve fareyle üzerine gelme yazım istemlerinin hepsi çok kullanışlıdır. Ek olarak, Scry kullanmak standart kitaplıkta kullanılan dil sunucusunun otomatik tamamlanmasını sağlayabilir ancak kullanıcının kendi kodunda yapılamaz. Crystal'in 1.0 piyasaya sürüldüğü güne ulaşmayacağından hala biraz endişeliyim, ancak gerçekten piyasaya çıkacağını umuyorum.

Belki siz de görebilirsiniz.Umarım gelecekteki programlama dilleri Crystal, Go ve ReasonML'nin avantajlarını özümseyebilir. Hangisini sevdiğimden emin değilim ama sanırım bunların hepsi aday. Sanırım bu dillerin önümüzdeki aylarda veya yıllarda ne hale geleceğini beklemek ve görmek zorundayım.

En çok hangi dili seviyorsun? Aşağıdaki yorumlarda düşüncelerinizi paylaşmaktan çekinmeyin.

Orijinal: https: //hackernoon.com/the-programming-language-im- looking-for-948d93f7a396 Yazar: Gal Schleziner, Wix'in ön uç geliştirme. Çevirmen: Crescent Moon, Kurgu: Tu Min

"Belgeler için çağrı"

CSDN kamu hesabı, "on milyonlarca teknik insanla büyüme" kavramını destekler. Teknik insanların ilk kez ilgilendiği endüstri odak olaylarını teknik insanların benzersiz bakış açılarından açıklamak için yalnızca "inek başlıkları" ve "konuşma" sütunlarını kullanmakla kalmaz, aynı zamanda "Teknik Başlıklar" sütunu, sektördeki popüler teknolojilerin ve uygulamaların derinlemesine bir yorumunu sunarak, tüm geliştiricilerin teknolojik trendlere ayak uydurmasına, uyanık bir teknolojik anlayışı sürdürmesine ve sektör eğilimleri ve teknolojileri hakkında daha kapsamlı bir anlayışa sahip olmasına olanak tanır.

Yüksek kaliteli makaleleriniz veya endüstrinin sıcak olayları, teknoloji trendleri hakkında içgörüler veya derinlemesine uygulama uygulamaları, senaryolar vb. Hakkında yeni içgörüleriniz varsa, lütfen gönderimler için CSDN ile iletişime geçin. İletişim: WeChat (guorui_1118, lütfen gönderim + ad + şirket pozisyonunu not edin), e-posta (guorui@csdn.net).

JD 618'in en büyük kazananı Xiaomi, netizenlerin tepkisi de oldukça saçma!
önceki
Kral olmaya devam edip önce Haval H6 Coupe'yi test edebilir mi?
Sonraki
Anneniz size uzun pantolon giymenizi söylüyor: Tmall Double 11% 34 artışla 4,74 milyon ürün satıyor
Beijing Daxing Yinghai Kasabası, yer değiştirme topluluğunda "kırmızı mülk" için yeni bir yönetim modeli oluşturuyor
One Piece bir tekneye biner ve Neptün bir çatal kullanır. Denizi fethetmek için Lincoln Navigator'a ihtiyacınız var!
Aylık 30k ~ 50k maaşla, bu alandaki yetenekler kapılıyor!
Çok bilgili! Kamyon gerçekten yakışıklı olacak, bir süper otomobil bile üç puanlık hayranlık içinde olmalı!
Google programcıları yapay zekayı nasıl araştırıyor?
Hem nominal değer hem de IQ çevrimiçi, Hisensein tarihteki en güçlü "grup ordusu" AWE2019'da şok edici bir şekilde göründü
90'ların sonrası küçük kurbağaların annesi olacak, mobil oyun pazarında kadın oyuncuların ne kadar potansiyeli var
Xianyu, Shen Mengchen'in 3.000 yuan dolandırıldığını söyledi: Genellikle, ödeme yapmayacak ve aktif olarak bununla ilgilenecektir.
Joe'nun çete lideri olmayan Apple artık bir Apple değil. Açgözlülüğün arkasında 1,6 milyar para cezası var!
Araba ayrıca parmak izi tanıma + kişilik ön ayarları, Hyundai dördüncü nesil Shengda konfigürasyon pozlama ile donatılmıştır.
Python 3 dizelerinde STR ve Bytes arasındaki fark nedir?
To Top