Küçük veya niş dilleri öğrenmekle uğraşmam gerekir mi? [kapalı]


22

StackExchange'teki golf sorularına göz atarsanız , F # , Scala , R , J ve Clojure gibi standart dışı ama gerçek dünya (örneğin, beyin-f * ck) dillerinin ton olmadığını fark edersiniz . Web sitelerini ziyaret ederken, bazı diller, hangi dili kullanıyorsanız kullanın, problem çözme konusunda ilginç görünüyor.

Ancak boş zamanlarında kodlama ve para için kodlama var. Bir dili kimin kullandığı gerçeğine en yakın olanımız , yukarıdaki dillerden hiçbirini ilk 10-15'te listeleyen TIOBE Dizinidir . Bu onları hiç kullanıp kullanmayacağımı merak etmemi sağlıyor.

Küçük niş dillerinin bir kısmını öğrenmek için bile uğraşmalı mıyım? Para kazanacağım gibi görünmüyor ve bazıları muhtemelen yine de başarısız olacak.


4
Tek umursadığın para kazanmaksa neden bu soruyu soruyorsun?
ChaosPandion

4
F #, VS2010'dan itibaren birinci sınıf bir dildir. Standart olmadığını söyleyemem ve yakında kabul edileceğini düşünüyorum.
Brian R. Bondy

8
Tek istediğin para kazanmaksa, programlamadan uzak dursan iyi edersin. Popüler bir aktris olmaya ne dersiniz?
P

2
@TheLQ: Ana akım olmak ister misiniz? Herhangi bir adımı atmaktan korkuyorsunuz, bunu yapmadan önce ne kadar para getireceğini bilmiyor musunuz? Öyleyse, lütfen ana ödeme ile de yetin. Hiç değilse, zihniyetinizle alacağınız tek şey bu.
Ingo

1
Bazı niş diller sizi daha üretken yapabilir, böylece ana dillerden daha fazla para kazanmanızı sağlar.
Giorgio

Yanıtlar:


25

Sapir-Whorf Hipotezi . Az ya da çok, aklınıza gelebilecek şeyin, tarif edeceğiniz dille sınırlandırıldığını belirtir. Bunun sonucu, çok dilli insanların, tek dil konuşanların yapamayabileceği şekillerde düşünebilmeleridir.

Pek çok insan (kendim dahil) bunun programlama için de geçerli olduğunu düşünüyor. Örneğin Lisp'i öğrenmek, size C # veya Java veya Python'a uygulayabileceğiniz sorunlar hakkında yepyeni bir düşünme şekli öğretir. Ne kadar çok dil paradigması öğrenirseniz, hangi dili kullandığınızdan bağımsız olarak zihinsel araç kutunuzda o kadar çok araç olacaktır.


1
Kesinlikle. Örneğin, bazı durumlarda, tamamen işlevsel bir dilin yeterli olmadığını düşünüyorum. Bununla birlikte, kendimi sürekli olarak işlevsel programlamayı destekleyen dillerde (örn. Javascript, c ++ 0x, vb.) Fonksiyonel kavramları çekerken buluyorum.
Cam

4
İnsanların Sapir-Whorf hipotezini (büyük ölçüde, ancak Dilbilimde tamamen itibarsız olmasa da) bir benzetme olarak kullanmaya devam ettikleri için çok eğleniyorum. Programlama konusundaki duyarlılığa kesinlikle katılıyorum, ancak insanların bizi ciddiye almasını istiyorsak farklı bir benzetmenin daha iyi bulunabileceğini düşünüyorum.
Jonathan Sterling

1
Hipoteze inanmıyorum, aksi takdirde asla homurdananların ötesine geçemezdik. Benzer şekilde programlama için, insanların dille sınırlı olduğunu düşünmeyin.
John Smith,

24

Bana daha önce hiç görmediğim kavramları ve paradigmaları tanıtan herhangi bir dili öğrenirdim. Bu yüzden haskell ve şemasını öğrendim - beni sırasıyla fonksiyon programlama ve çoğunlukla işlevsel programlama ile tanıştırdılar. Mevcut belgelerin ve kaynakların nasıl etkileyeceği bir yana, planın ve haskell'in yaygın olarak kullanılıp kullanılmadığını daha az umursamazdım.

Temel olarak, küçük bir niş dili size yeni kavramlar ve paradigmalar (özellikle de diğer dillere uygulayabileceğiniz diller) tanıtırsa, o zaman öğrenin!

Bir 'küçük / niş' dil öğrenmek isteyebileceğiniz diğer nedenler:

  • Dil, belirli bir (tür) sorunu “daha ​​iyi” (daha hızlı, daha iyi bir çözümle, daha taşınabilir, vb.) Herhangi bir dilden çözmenize olanak tanır.

  • Dil, popüler bir dilin yanı sıra, problemleri çözmenize izin verir, ancak sevdiğiniz bazı harika özelliklere sahiptir (örn. Clojure)

  • Dili geliştirmeye yardım etmek istiyorsun

7

Clojure kullanıyorum (bahsettiğiniz "niş dillerden" biri) ve bunun çok değerli bir deneyim olduğunu öğrendim.

  • Beni çok daha üretken yaptı (Java ile daha önce kullandığım C #). Kendi işimi yürütürken, üretkenlik paraya eşittir :-) bu nedenle Clojure en azından benim açımdan başarılı oldu.
  • Beni daha iyi bir geliştirici yapan (özellikle eşzamanlılık, fonksiyonel programlama, soyutlama, metaprogramlama vb.) Yeni teknikler öğrendim. Java yazmaya geri dönsem bile, yine de bu bilgiyi iyi kullanabilirim
  • Daha önce yaptığım her şeyden çok farklı yeni bir dil öğrenmek gerçekten zevkliydi. Yaptığın şeyden gerçekten zevk alıyorsan, başlı başına buna değer.
  • Bir JVM dili olduğundan, kitaplık kümesinin nispeten küçük olması önemli değildir çünkü Java / JVM ekosistemindeki tüm kitaplık kümelerine hala erişebilirsiniz. Bu, JVM'de çalışan diller için büyük bir avantajdır (aynısı Scala için de geçerlidir).

Şahsen, TIOBE gibi sınırlı ilgi alanlarına dikkat ederdim - onlar gerçekten geçmişte popüler olanların ötesinde pek bir şey söylemiyorlar. Eski sistemleri sürdüren bir iş istiyorsanız, belki de daha az, ufkunuzu öğrenmek ve genişletmek istiyorsanız, bu işe yarar.


4

Bir niş dili çalışma sebebi, nadiren doğrudan kullanacağınız beklentisidir (para için ya da başka şekilde). Genellikle bazı yeni yönleri veya programlama stilini öğrenmek için kullanılır. Bunu yapmak, "üretim" kodunu üretmek için hiçbir zaman bu dili kullanmasanız bile, sizi daha iyi (ve evet, muhtemelen daha değerli) bir programcı yapacaktır.


4

Niş bir dilde profesyonel bir geliştirici olarak konuşurken, geçim yapmak mümkün. Olsa da, ters ve dezavantajları vardır.

Zor olan şeyler:

  • İş bulmak daha uzun sürüyor
  • İşlerin taşınmanızı gerektirmesi daha olası
  • Ana programlayıcılardan çok az saygı göreceksiniz (ve dolayısıyla daha fazla direnç).

Daha kolay şeyler:

  • Küçük programcılar havuzu iş için rekabet etmeyi kolaylaştırır
  • Alanınızdaki önem taşıyan her programcıyı tanıyabilirsiniz.
  • Bir itibar geliştirmek, ana akımdan daha kolaydır

O şeyler sadece şunlardır :

  • Az sayıda standart olduğu için ödeme daha değişken olma eğilimindedir
  • Başkalarını, nişinizin güçlü ve zayıf yönleri hakkında eğitmek için çok zaman harcanır

Genel olarak, eğer bir kariyer kaygınızsa, asla tek hileli bir midilli, ana akım veya niş olmamanız gerekir.


2

Şu anda Ruby'yi Project Euler sorunlarını çözmek için kullanarak öğreniyorum , çünkü günümün çoğunu C veya PHP (ve bazen C #) programlarında geçiriyorum ve ufkumu genişletmek istiyorum. Şimdiye dek gerçekten neler yapabileceğime gözlerimi açtı. Asla herhangi bir "gerçek" iş için kullanmasam bile, öğrenmeye harcanan zamanın değersiz olacağını düşünüyorum.


Proje euler için +1. Aynı şeyi python öğrenirken de yaptım

1

Belirtilen tüm hususlara katılıyorum. Bir niş dili öğrenmek için bir başka motivasyon, dilin bir gün çok popüler hale gelme olasılığıdır. Bu durumda, dile olan erken yatırımınız, etkili çerçeveler ve gelecekte de yüksek talep görebilecek dilin unsurları üzerinde çalışmaya başlamanıza neden olabilir.

Dil popüler hale gelirse, zaten onunla yetenekli olacaksın ve bu yüzden yoğun talep göreceksin.

Düşük olasılık, potansiyel olarak yüksek ödüller.


2
Şahsen, her zaman dillerden ziyade kavramları öğrenmeye çalışacağım ... ne demek istediğimi biliyorsanız sınırlı beyin alanı.
ChaosPandion

1

Başkalarının neredeyse söylediği gibi, bir niş dili öğrenmek, çünkü bir niş dili pek bir anlam ifade etmiyor. Yine de, niş diller, genel dillerin karşılayabileceği veya isteyebileceğinden çok daha derin / derin bir kavramı keşfediyor.

Ve bazen niş diller, anadil dillerinden herhangi birinden çok daha uzun zamandır olmuştur - Smalltalk, Prolog ve Lisp dilleri akla zıplar. Popüler olmayabilirler, ama onlar da kaybolmuyorlar.

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.