JavaScript, Yeni Kodlayıcılar İçin En İyi Dil midir?

Birçok kusuruna rağmen, JavaScript çocuklar ve yeni öğrenenler için en iyi dil bozucu dil olabilir.

2007 yılıydı. Üst düzey bir teknik yayıncı olan Oilly Media, bir fikirle bana yaklaşmıştı. Yeni başlayanlar için JavaScript'i tanıtan bir kitap yazmak ister misiniz?

Cevabım hemen oldu: Neden?

JavaScript yararsız değildi. Ancak JavaScript, bir web sitesi oluşturmak için gereken teknolojilerin dikkatli bir şekilde düzenlenmesinde kullanılan bir bileşendi - ve en önemlisi de en önemlisi idi. Evet, bir JavaScript perisi tozu serpmesi uzun formları doğrulayabilir veya birisinin üzerine geldiğinde bir düğmeyi parlatabilir. Ancak JavaScript isteğe bağlıydı - bir sayfadan çıkarın ve her şey aynı şekilde çalışmaya devam etti.

JavaScript de ciddi bir bagajla birlikte geldi. Tarayıcı uyumluluğu sorunları, yavaş, güvensiz ve açıkça güvenilmez olanlarla bağlandı. Birisine nasıl işe yaramaz bir JavaScript destekli web sayfası widget'ı oluşturulacağını öğretmeye hiç ilgi duymadım. Bu fikir, İnternetin ilk günlerinde tüm öfke olan dönen küre animasyonlu gifler gibi anlamsız görünüyordu.

JavaScript'i kullanmanın en açık yolu ya da o zaman saf bir şekilde düşündüm, büyük sunucu tarafı çerçevenizi doğrudan sayfa içine gereken JavaScript'i oluşturmasına izin vermekti. Evet, bu JavaScript biraz şişirilmiş olabilir, ancak diğer ucunda tarayıcıya uyacak şekilde uyarlandı ve ziyaretçi JavaScript'i tamamen kapatmış olsa bile hiçbir şey kırılmadı.

Söylemeye gerek yok, ben kitap yazmadım. Web sunucusuna kod yazmaya ve en sevdiğim teknolojileri (genellikle C # ve .NET Framework) yazmaya devam ettim. Yıllar geçti.

Sonra garip bir şey oldu.

JavaScript devraldı.

Hala, programlama dillerinde JavaScript'in en iyi seçenek olarak adlandırılmayı hak ettiğini düşünmüyorum. Dürüst olmak gerekirse, bunun özellikle iyi bir dil olduğunu düşünmüyorum. Ama bir konuda fikrimi değiştirdim. Şimdi JavaScript'in çocuklar ve yeni kodlayıcılar için en iyi başlangıç ​​noktası olabileceğine inanıyorum.

JavaScript’in inanılmaz erişimi

JavaScript’in rakipsiz avantajlarından biri de erişebilmesi.

JavaScript her yerdedir - her işletim sisteminde, her marka tarayıcısında ve masaüstü bilgisayarlarda ve mobil cihazlarda desteklenir. Aynı derecede önemli, JavaScript'in herhangi bir dağıtım gerektirmemesi. Aslında, şirketlerin istemci-ağ uygulamalarını² kendi iç ağlarında yayınladıklarında, kurulum sorunları ve beklenmeyen hatalarla haftalarca güreşirken çok uzak olmayan bir geçmişi hatırlamak zaten çok zor. Bu kabuslarla karşı karşıya kaldığınızda, JavaScript’in çekiciliğini görebilirsiniz.

Erişimi sayesinde, JavaScript'in en iyi programlama dili olması gerekmedi. Sadece yeterince iyi olması gerekiyordu.

Kodlamayı öğrenmek söz konusu olduğunda benzer bir dinamik iş başındadır. İlk başta, ulaşma sorunu, tek amacı iyi programlama uygulamaları öğrenmek olan bir kişi için önemli görünmüyor. Ancak aynı sorunların çoğu, mesleki gelişimdeki gibi programlamayı öğrenmekle birlikte ortaya çıkmaktadır. Çalışmanızın evrensel erişime sahip olmasını istiyorsanız, tek aday JavaScript'tir.

Örneğin, inanılmaz bir kişilik öngörücü-test uygulaması oluşturduğunuzu varsayalım. Bir geliştirme ortamı oluşturmak nispeten kolaydır. Ancak, programınızı bir arkadaşınıza göndermek istediğinizde ne olur? Bir çalışma zamanı yüklemeleri veya aynı geliştirme ortamını kurmaları mı gerekiyor? Bilgisayarınızın, programınızı yüklemelerine ve yüklemelerine izin vermeden önce güvenlik ayarlarının ince ayarlanması gerekir mi? Belki arkadaşınız, programınızı hiç desteklemeyen bir işletim sistemi kullanıyor - veya yalnızca iTunes veya Google Play mağazasında dağıtılan profesyonel uygulamalara izin veren bir mobil platform kullanıyor. JavaScript ve basit bir web sitesi (GitHub size ücretsiz küçük bir alan sağlayacak) ile bu sorunlar kayboluyor.

Ve eğer yeni kodlayıcı olmak bir çocuksa, işte tartışılmaz bir gerçek: çocuklar ve tarayıcılar çok sıkı. Çalışan bir çocuğu bilgisayarda (mobil bir cihazda değil) izlediyseniz, muhtemelen zamanlarının en az% 98'inin tarayıcıda geçirildiğini fark etmişsinizdir. Orada oyun oynuyorlar, sosyal medya kullanıyorlar ve okulları Google sınıfı ve Google Dokümanlar üzerinden inceliyorlar. Oluşturdukları kodun, içinde bulundukları tarayıcı dünyasında tüketilmesi yalnızca doğaldır.

Şimdi sorunlar için…

Peki ya sorunlar? JavaScript'in bazı ciddi sakıncaları vardır ve tuhaflıkları, tutarsızlıkları ve kısıtlamaları, ilk kez programlamayı öğrenen biri için özellikle acı verici olabilir. Neyse ki, acının çoğunu önleyebilecek modern çözümler var.

En sık görülen dört şikayete bakalım.

1. JavaScript güvenli değil

Yeni programcıların erken öğrendiği anahtar kavramlardan biri, program ömrü boyunca bilgi depolayan değişkenler ve kapsayıcılardır. JavaScript ile ilgili sorun değişkenler ile gevşek ve özensiz olmasıdır. Doğru görünmeyen şeyleri kabul eder ve açık sorunları yok sayar. Tembelliği, küçük yazım hatalarını kod çökmesini sağlayan felaketlere dönüştürebilir.

Başarısızlığa mahkum olan bazı kodlara bir örnek:

var myNumber = 100;
myNumber = myNumbr + 1;

Hatayı yakaladın mı? İkinci satır aslında iki değişken kullanır: ilk satırda tanımlanan myNumber değişkeni ve hayali bir myNumbr değişkeni. İkinci değişkenin bir yazım hatası sonucu olduğunu biliyoruz, ancak JavaScript anında hesaplamayı sessizce gerçekleştirmesine neden olan yeni bir myNumbr değişkeni oluşturarak sorunu "düzeltir". Tutarsız büyük / küçük harf değişkenli bir değişken kullanırsanız aynı sorun ortaya çıkar (myNumber yerine MyNumber gibi). Bir değişkenin, gerçekten bir metin parçası varken sayı tuttuğunu düşünüyorsanız, benzer bir sorun ortaya çıkar. Her JavaScript geliştiricisinin böyle bir JavaScript korku hikayesi vardır.

Programlama dilinizin sizi aynı anda sabote etmesi için endişelenmenize gerek kalmadan kod yazmayı öğrenmek yeterince zor. Ancak, mutlu bir şekilde, tip güvenlik sorunları doğru geliştirme aracıyla kolayca çözülebilir.

En sevdiğim kod düzenleyicilerimden biri - hem öğrenme hem de profesyonel kullanım için - Visual Studio Kodu. Ücretsiz, hafif, açık kaynaklı ve sonsuz bir şekilde genişletilebilir. En iyi özelliklerinden biri, yaygın sorunlar için JavaScript kodunu kontrol etme yeteneğidir. Bir yapılandırma dosyası ekleyerek veya bu yorumu bir JavaScript dosyasının en üstüne yapıştırarak hata kontrolünü açabilirsiniz:

// @ ts-check

İşte ikisi de JavaScript’in gözünde sorun değil, ikisi de yanlış olan bir örnek:

Kredi: Matthew MacDonald ©

Ts-check commentini kullanırsanız, Visual Studio faydalı bir şekilde şu olası hataların altını çizer:

Fare ile bu altı çizili alanlardan birinin üzerine gelin ve Visual Studio, sorunun bir açıklamasını çıkarır:

Götürmek? Her ne kadar JavaScript çok sayıda kötü programlama uygulamasına tolerans gösterse de, JavaScript'i iyi bir kod düzenleyiciyle birleştirirseniz, diğer modern programlama dillerine benzer bir deneyim elde edebilirsiniz. Ve JavaScript’in erişiminden vazgeçmedin.

2. JavaScript OOP yapmaz

Nesneye yönelik programlama (OOP) kodu modelleme ve düzenleme yöntemidir. Doğru yapıldığında, OOP programcıların daha basit ve daha iyi düzenlenmiş kodlar oluşturmasına yardımcı olur. Ayrıca, önemli işlev parçalarının tekrar kullanılmasını kolaylaştırır.

JavaScript, nesne yönelimli programlamayı destekleme konusunda meşhur değildir. Aslında, JavaScript geliştiricileri bunu garip teknikler ve tuhaf geçici çözümler ile rutin olarak sahte yapar. Bu teknikler, programlamayı zaten öğrenmiş olan birine anlamlı gelebilir (ve olmasalar bile, deseni kendi projelerinize kopyalayabilir ve onunla yaşamayı öğrenebilirsiniz). Ancak kodlamada tamamen yeniyseniz, temel bir programlama konsepti için bir tortu kullanmak açık bir başarısızlıktır.

Neyse ki, JavaScript dili ile doğru şekilde bütünleştirilen daha iyi, daha zarif çözümler var. En sevdiğim, Microsoft tarafından 2012 yılında başlatılan açık kaynak kodlu bir proje olan TypeScript.

Bazıları TypeScript’in tam olarak JavaScript olmadığını ve bunun doğru olduğunu itiraz edebilir. Ama işte sihirli kısım. Kodunuzu TypeScript'te yazabilir ve daha sonra bir web sayfasında kullanmadan önce JavaScript'e dönüştürebilirsiniz. Bu size her iki dünyanın da en iyisini sunar: kodunuzu yazmak için modern bir programlama dili ve kodunuzu normal JavaScript olarak çalıştırmak için aynı evrensel destek.

Hepsinden iyisi, Visual Studio Code gibi bir araç kullanırsanız bu işlem otomatik olarak gerçekleşir. Evet, oluşturulan JavaScript kodu hala tek geçici çözümler kullanacaktır. Ama ne olmuş yani? Programcı OOP kavramlarını öğrenir, bitmiş kod bir hıçkırık olmadan çalışır ve modern bilgisayarlar tüm karışıklığı kolaylıkla idare eder.

Bana inanmıyor musun? Günümüzün en yenilikçi masaüstü uygulamalarından bazıları, JavaScript'in tarayıcı dışında çalışmasına izin veren bir çerçeve olan TypeScript ve Electron'un bir kombinasyonunu kullanıyor. En etkileyici örneklerden biri Visual Studio Code. Bu doğru - JavaScript kodu yazmak için kullandığınız aynı kaygan araç, JavaScript kodu ile de yazılmıştır. Daha spesifik olarak, JavaScript dilinin modern TypeScript tadı kullanılarak yazılmıştır.

Tabii ki, TypeScript kullanmanıza gerek yoktur ve yeni JavaScript programcıları, isterlerse OOP prensiplerini öğrenmeden çok şey yapabilirler. Bu gerçekten bir seçim meselesi. Her iki şekilde de umut ufukta: JavaScript hala geliştiriliyor ve yeni sürümler yavaş yavaş TypeScript'ten gelen bazı geliştirmeleri ekliyor.

3. Dünya bozuk JavaScript koduyla dolu

Hiç Visual Basic'i duydunuz mu?

4. JavaScript'in ek kütüphanelere ve çerçevelere ihtiyacı var

Daha fazla işlevselliğe erişmek ve (tekerleği yeniden icat etmekten kaçınmak için), JavaScript kodlayıcıların diğer bileşenleri, kütüphaneleri ve çerçeveleri kullanması gerekir. Doğru malzemelerin seçilmesi - iyi çalışanlar, ileride uzun süre desteklenecek ve birbirleriyle çatışmayacak - göründüğü kadar kolay değil.

Çoğu dil bu sorunun bir versiyonuyla karşı karşıyadır. Ancak, birkaç dil bu durumdan en az JavaScript kadar zarar görmektedir. Herkes için ücretsiz JavaScript dünyasında ciddi bir programcı olmak için, size kadar uygun olup olmadığını bilemeyeceğiniz kadar karmaşık ve katlanmış seçeneklerden birini seçerek, kendi geliştirme araçları ve eklentilerinizi bir araya getirmeniz gerekir. iyice öğrendim (bu noktada eskimiş içine sürüklenmiş olabilir, bunun yerine en son sıcak yeni moda geldi).

Bu baş ağrıları kadar kötü, yeni kodlayıcıları gerçekten etkilemiyorlar. Eğer birisi JavaScript ile kodlamayı öğreniyorsa, en iyi yaklaşım jQuery, Angular, React, Vue veya bu cümleyi yazdığım zaman ile icat edilmiş bir şeyden bahseder miyiz, çerçevelerden ve kütüphanelerden uzak durmaktır. yayınla. Sonunda, yeni bir kodlayıcı temel programlama kuralları hakkında bilgi sahibi olduktan sonra, muhtemelen bu çerçevelerden en az birini keşfetmek isteyeceklerdir. Ama bu başka bir gün için bir konudur.

Çocuklara program yapmayı öğreten en iyi ilk dil hakkında kendi görüşleriniz var mı? Doğru bir cevap yok (ve kendi favorilerim var). Aşağıdaki yorumlar bölümünde son derece görüşlü cevapları bırakmaktan çekinmeyin! Ve çocuklar için yeni kodlama kitaplarımın ücretsiz bir ön inceleme kopyasını almak istiyorsanız, ProseTech bültenine kaydolun.

¹ Sunucu tarafı kodu, bir web sunucusunda çalışan ve bilgisayarınızdan uzaktaki koddur. İstemci tarafı kodu, doğrudan tarayıcınızda çalışan koddur. Örneğin, Amazon'da bir ürün arayın ve sunucu tarafı kodu Amazon'un veritabanlarını araştırır, olası eşleşmelerin bir listesini içeren HTML'yi oluşturur ve tarayıcınıza gönderir.

² İstemci-sunucu uygulamaları, işi iki bölüme ayıran eski bir uygulama modelidir. Bir bölüm, diğer bölümle (sunucu) başka bir bilgisayarla iletişim kuran bir masaüstü bilgisayarda (istemci) çalışır.