Öğrenme Deneyimi İçin Yeni Bir Komut Dosyası Dili Oluşturmak? [kapalı]


13

Kendi kişisel öğrenme deneyimim için bir betik dili oluşturmak buna değer mi?

Sormamın nedeni, halihazırda birçok programlama dilinin mevcut olması, benimkinin iyi bir öğrenme deneyimi sağlamaktan başka hiçbir şekilde gerçek bir kullanımının olmayacağını biliyorum. Bununla birlikte, bir betik dilini bir öğrenme deneyimi olarak yapmaya çalışırken dezavantajları görüyorum: daha "üretken" bir şey yapabileceğim çok zaman ve çaba gerektirecek.

Bir programlama dili oluşturmak (tasarlanan amacı, sözdizimi, felsefesi, tercümanı vb. Yazmak) zaman, çaba ve öğrenme deneyimine değer mi? Yoksa daha fazla yararlanabileceğim başka projeler var mı?


3
Başka bir seçenek mevcut bir dili uygulamaktır. Bir yıldan uzun süredir Machete adında bir ECMAScript lehçesi geliştirdim ve biraz öğrendim.
ChaosPandion

İlginç, bunu düşünmemiştim.
Ivan

2
1) Bunu öğrenin ... www1.idc.ac.il/tecs 2) ve bu ... mitpress.mit.edu/sicp
Joe Internet

Ayrıca varolan projelere v8, SpiderMonkey veya Python'a katkıda bulunmayı düşünebilirsiniz
treecoder 17:11

3
IMHO, yeni programlama dillerini öğrenmenin en iyi yolu onlar için derleyiciler uygulamaktır (veya en azından orijinal dillerin önemli alt kümeleri için). Yani, evet, gerçekten yararlı bir öğrenme deneyimidir.
SK-logic

Yanıtlar:


15

Becerilerinizi ve Portföyünüzü Geliştirin

Bence bu çok iyi bir öğrenme deneyimi olacaktı:

  • sizi kaputun altına bakmaya zorlar ,
  • işlerin dahili olarak nasıl yapıldığını öğrenmeniz için size rehberlik eder ,
  • diğer uygulamalara bakmanızı ve karşılaştırmanızı teşvik edin ,
  • senin tutmak ALGORITHMICS becerilerini hızına kadar,
  • sizi çok kodlayın (ve umarım belgeleyin ), bu da kötü değil,
  • herkesin görmesi için çevrimiçi olarak paylaşabileceğiniz önemli bir proje ve kod tabanı verin:
    • kişisel zevk ve tatmin ,
    • potansiyel işverenlere yeteneklerinizi sergilemek ,
    • aynı alanla ilgilenen akranlarla iletişim kurmak ve alışveriş yapmak ,
    • potansiyel olarak daha fazla bir şeye dönüşmesine izin ver ...

Bu yüzden bunu üretmek, faydalı ve genel olarak "buna değer" olarak görüyorum.

Başlamak

Şimdi, bu konuda ne kadar zaman harcamayı planladığınıza bağlı olarak farklı yaklaşımlar kullanabilirsiniz ...:

  • Sınırlı bir zaman dilimi varsa, dalış ve şey kodlamak söyleyebilirim.
  • Daha geniş bir zaman diliminiz varsa, gerçekten uzun soluklu bir şekilde gidebilir ve teknik özellikler, öğreticiler, el kitabı vb.

Küçük başla

Küçük başlamanızı tavsiye ederim . Kimse bildiğim kadarıyla böyle harika bir dil yazmamıştı. Tökezleyip düşüyorsunuz ve başarısız oluyorsunuz ve başarısız ve başarısız oluyorsunuz . Sonra başarılı, ancak işe yarıyor ama yine de berbat, böylece bir kez daha baştan. Ve yeni özellikler eklersiniz ve nihayet soğumaya başlarsınız, ancak aniden başlangıçta batırdığınız temel bir kavram olduğunu fark edersiniz. Böylece bir kez daha başlıyorsunuz ...

Bana çok eğitici geliyor.

Devam edin (ve bağlantıyı bizimle paylaşın).

Küçük, "kısa" gibi

Ama yine, küçük başlamanızı tavsiye ederim . İnsanlar çok fazla kod ve zaman alacağını söylüyorsa korkma. Zorunlu bir dili hedeflemiyorsanız, mutlaka değil. Alan Kay ve diğer Xerox PARC mühendisleri iddia erken versiyonunu geliştirdi Smalltalk kağıt tek bir kağıda uyum olduğunu (okuma kısa ve özlü oluşu nedeniyle objektif bir şekilde, : Yıldırım Satıcıları Xerox PARC tarihi hakkında ayrıntılı bilgi için PARC'da ). İyi, eğitici ve kısıtlı bir yaklaşım gibi görünüyor (okunabilirliği feda etmediği sürece).

Küçük, "kısıtlanmış" gibi

Hemen gelişmiş bir sistem, daha üst düzey funktonlar ve 42 farklı paradigmanın bir karışımını desteklemenize gerek yok. Sadece matematiksel bir ifade dili olabilir.

Diğerlerinin Bilgilerini Yeniden Kullanın (ve Göz Atın)

Dilleri sıfırdan yazmak için kullanılan araçlara da göz atmak isteyebilirsiniz. Her şeyi kendiniz yeniden uygulayabilirsiniz, ancak örneğin mevcut lexers ve ayrıştırıcı jeneratörlerine de bakmaya değer.

Ve açıkçası, derleyici yapımını genel olarak okumak isteyebilirsiniz .


Şimdi, sorunuzu "zamanınızın EN verimli kullanımı mı?" tamamen farklı bir konu haline geliyor :)

Üstesinden gelebileceğiniz tonlarca başka öğrenme projesi var ve bu daha iyi olmasa da becerilerinizi eşit derecede eğitecek ve sergileyecektir. Ne amaçlamak istediğinize bağlıdır.


2
"O zaman başarılı, ancak işe yarıyor ama" berbat "için +1
Ivan

1
@Ivan: Teşekkürler :) Muhtemelen öğrenme deneyiminin bir başka iyi kısmı: içgözlem, alçakgönüllülük ve azim!
haylem

1
Haylem'e katılıyorum. Genel olarak programlama hakkında öğreneceğiniz miktar, dillerin nasıl çalıştığı, farklı şeyleri uygulama yöntemleri buna değecektir. Evet, muhtemelen onu gören tek kişi siz olacaksınız, ancak kendinizi geliştirmek için üzerinde çalıştığınız küçük evcil hayvan projeniz olacak.
RJay75

3

Devam et diyorum.

Bir programlama dili uygulamak çok çeşitli konuları kapsar ve başlık altında işlerin nasıl çalıştığı hakkında çok şey öğrenirsiniz. Muhtemelen yarım düzine kadar başarısız denemeyle yaşayacaksınız, ancak öğrenme deneyimi çok değerli.


2

(Oyuncak ama eksiksiz) bir programlama dili tasarlamak ve uygulamak aslında üst bölüm CS sınıflarımdan birinde (derleyici sınıfı veya programlama dili anketi, hangisini unuttuğumu unutmam ...) alıştırmalardan biriydi.

En az bir CS profesörü böyle düşündü.

Diğer dillerin sahip olduğu tüm "tuhaflıklar" için çok daha iyi bir takdirle sonuçlanacaksınız.


1

Bunu yapmak biraz zaman alacaktı. Bakımını yapmayı planlıyor musunuz?

Bir programlama dili oluşturmak (tasarlanan amacı, sözdizimi, felsefesi, tercümanı vb. Yazmak) zaman, çaba ve öğrenme deneyimine değer mi? Yoksa daha fazla yararlanabileceğim başka projeler var mı?

Finansal durumunuzun sonsuz olmadığını varsayıyorum, bu yüzden zaman ayırmaya değmediğini söyleyebilirim. Size para kazandıracak diğer yararlı projelere zaman harcayabilirsiniz. Bu aradığınız cevap olmayabilir, ancak mantıklı bir bakış açısıyla, programlama dilinizin şu anda doğru proje olmayabileceğini söyleyebilirim. Emekli bir bilgisayar bilimcisi olsaydınız ve sektöre katkıda bulunma ihtiyacını hissettiyseniz düşünürdüm. Programlamaya karşı güçlü bir tutkunuz var gibi görünüyor ve bu harika. Peki, tamamen yeni bir betik dili mi inşa ediyorsunuz? Bu çok uzun bir proje olacak. O zaman portföyünüze atabileceğiniz birçok uygulama geliştirmiş olabilirsiniz. Bence soru şu:


2
Bilmiyorum ... büyük bir aşk emeği, her biri yüz dolar kazanabilecek yirmi fırlatma uygulaması koyar.
ChaosPandion

Etki alanına özgü diller uygulamak aslında pratik bir projenin geliştirilmesini önemli ölçüde hızlandırabilir. Bu yüzden finansal açıdan olduğu kadar estetik olarak da tatmin edici olabilir.
SK-logic

1
Bazı insanlar bir şeyler yaratırlar çünkü bir şeyler yaratmayı severler ... söz konusu yaratma eylemi onlara biraz para kazandıracağı için değil.
Jetti

@Jetti. Evet biliyorum. Bu yüzden bu cevabın aradığınız cevap olmayabileceğini söyledim ve programlama için bir tutkunuz olduğunu söyleyebilirim. Birisinin bu cevap hakkında söylediklerinize benzer bir şey söylemesini beklediğim için girdiniz için teşekkür ederim.
Ryan

@Ryan - üzgünüm o kısmı kaçırdım.
Jetti

-2

Sana tavsiyem

Tekerleği yeniden icat etmeyin

Bu deyimsel metafor için ilham, tekerleğin hem kullanıcılarına sağladığı ek güç ve esneklik sayesinde hem de hepsinin olmasa bile çok fazla vurgulanmasına izin veren antik kökenlerde insan yaratıcılığının arketipi olması gerçeğinde yatmaktadır. , modern teknoloji. Zaten icat edildiği ve herhangi bir operasyonel kusuru olmadığı düşünülmediği için, onu yeniden keşfetme girişimi anlamsız olacak ve nesneye değer katamayacak ve araştırmacı kaynaklarını muhtemelen daha değerli hedeflerden uzaklaştıracak zaman kaybı olacaktır. yetenekleri daha önemli ölçüde ilerleyebilirdi.

Kendinize şunu sormalısınız:

  • Neden senaryo oluşturmalısınız? Mevcut komut dosyası yeterince iyi değil mi?
  • Bunu koruyacak ve yayınlayacak mısınız ve betiğinizin diğer programcılar tarafından kullanılacağından emin misiniz? Cevabınız hayırsa, yapma.

Daha fazla öğrenme deneyimine sahip olmak istediğinizi anlıyorum ve bu nedenle kişisel olarak çerçeve oluşturmanın size daha fazla öğrenme deneyimi kazandığını ve sizin / ekibinizin / topluluğunuzun bir senaryo oluşturmaktan daha sonra tekrar kullanabileceği bonusu ile düşünüyorum.

Ve bu xkcd komik biraz alakalı, sadece "standartları" değiştirmek için de "dil":

resim açıklamasını buraya girin


-1, bunun kişisel bir öğrenme deneyimi için olacağını söyledi.
GrandmasterB

Sadece senaryo oluşturmanın kendisine ve topluma gerçek kişisel öğrenme deneyimi ve faydası vermeyeceğinden emin olmak isteriz. Ayrıca, çerçeve oluşturmanın kendisine ve topluma daha fazla fayda sağlayacağına dair cevabımı da ekledim. Eğer doğru olmadığını düşünüyorsanız, daha fazla oy almayı umursamıyorum.
Rudy

2
Evet, haklısın - hiçbir birinci sınıf programcısı ilk "Merhaba Dünya!" - sonuçta, sadece mevcut olanı indirmek çok daha iyi olurdu. Ve bu bağlamda " çerçeve " nedir?
SK-logic

5
@Rudy, bir derleyici veya yorumlayıcı uygulamak öylesine önemsiz ve temel bir beceridir ki, "Merhaba, Dünya!" Bu yüzden iyi bir CS kursunda zorunludur. Ve önemsiz olmasına rağmen, bu görev hemen hemen her alanda pratikte uygulanabilir bir dizi çok yararlı beceri öğretir. DSL'lere uygulayan son derece önemli olduğunu belirtmek gerek (sakıncası - Hazırda söz ettik sen thingy olduğunu olduğunu bir DSL ve oldukça kötü uygulanmaktadır bazıları buna gömülü tercüman ve derleyici, bir dizi vardır).
SK-logic

3
@ SK-logic - Burada benim özgüvenime yardım
etmiyorsun
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.