Deneysel Dilleri öğrenmeye değer mi? [kapalı]


25

Ben bir gün programcı olarak sahada çalışmak isteyen genç bir programcıyım. Java, VB.NET ve C # biliyorum. Yeni bir dil öğrenmek istiyorum (programcı olarak bildiğim kadarını genişletmenin değerli olduğunu biliyorum - sizi farklı düşünen dilleri öğrenmek için). Hangi dillerin ortak olduğunu görmek için çevrimiçi olarak baktım. Herkes C ve C ++ 'ı (genel olarak bilgisayarlar hakkında çok az şey bilen o soygunlar bile) bilir, bu yüzden belki C için zorlamalıyım.

C ve C ++ güzel ama yaşlılar. Haskell ve Forth (vb. Vb.) Gibi şeyler eskidir ve popülerliklerini yitirmiştir. Bu sebepten dolayı C (veya hatta C ++) öğrenmekten korkuyorum. Java da oldukça eski ve yavaştır, çünkü JVM tarafından çalıştırılır ve yerel koda göre derlenmez.

Bir süredir Windows geliştiricisi oldum. Geçenlerde Java'yı kullanmaya başladım - ancak yalnızca diğer yerlere daha çok yönlü ve yayılabilir olduğu için. Sorun, bu nedenlerden dolayı çok kullanışlı bir dil gibi görünmemesidir :

  • En çok kullanılan amacı web uygulaması ve cep telefonu uygulamaları içindir (özellikle Android)
  • Bununla ilgili gerçek ürünler göz önüne alındığında, akla gelen tek şey Netbeans, Eclipse (IDE'nin kullandığı dil ile yapmak ve bunun için IDE olmaktır - HTML / CSS / Javascript yazmak için bir web sayfası yapmak gibi) ve Minecraft. Bu eğlenceli olur ama bilgisayar spec kadar laggy ve bipolar. destek.
  • Bunun dışında sunucular için kullanılır ancak heck - Sadece sunucu yapmak / yapılandırmak istemiyorum .

Ancak, .NET dilleri güzel:

  • Hatta ciddi bir sohbette VB.NET veya C # den bahsetsem de güler.
  • MONO kullanmadığınız sürece platformlar arası değildir (ki hala geliştirilme aşamasındadır ve yapılması gereken bazı iyileştirmeler vardır).
  • JVM ile Java gibi CLR tarafından çalıştırıldığı / yönetildiği için düşük seviyeli şeyler yoktur.

İlk düşüncem, C gibi bir şey öğrenmek ve daha sonra sıçrama tahtası için C ++ 'ı kullanmak (sadece güçlü bir anlayış / temel alacağımdan emin olmak için) kullanmaktı, ama daha önce de söylediğim gibi, her geçen gün daha da yaşlanıyor.


Nelere Baktım?

Fantom güzel görünüyor. En sevdiğim diller arasında hoş bir aracı gibi ve ikisi arasında birbiriyle değiştirilebilir bir şekilde yayınlamama izin veriyor, ama istediğimden farklı olarak, tam bir derleme olmak yerine CLR veya JVM'ye (ne yayınladığına bağlı olarak) derliyor. .

D de güzel görünüyor. Bu çok kullanışlı bir dil gibi görünüyor ve gelenmultiplekaynaklardan aslında C / C ++ daha iyi görünüyor. Tam bununla zıplardım, ama hala başarısından emin değilim, çünkü açıkça bu noktada çok yaygın değil.

Web geliştirme ile Opa ve Go by GOOGLE gibi diğer şeylere odaklanmış oldukça hoş görünen birkaç kişi var .


Benim sorum

Bu "deneysel" dilleri öğrenmeye değer mi? Eğer sürekli dil öğrenemiyorsanız ve programlama için doğru zihniyette olmadığınız tüm dillere açıksanız, diğer soruları okudum. Bunu anlıyorum ve hala tam olarak anlamadım, ama aslında, eğer bir dil ana akım olmayacaksa, zamanımı başka bir şey öğrenerek harcamalı mıyım? Eski (ya da yakında eski olacak) programlama dillerini öğrenmek istemiyorum. Birçok insanın bunu önemli bir şey olarak gördüğünü biliyorum, * ama herhangi biriniz (zaten bilmediğinizi varsayarak) hiç düşünürdü. FORTRAN? Amacım, gelecekte başarılı olduğumdan emin olmak için güncel kalmak.


feragat

Evet, ben genç bir programcıyım, bu yüzden sorumla ilgili pek çok naif ifade verdim. Beni HERHANGİ düzeltmek için çekinmeyin! Bir yerde öğrenmeye başlamalıyım, bu yüzden birçok bilgimin yanlış düşüncelere veya yanlış düşüncelere neden olacak kadar kabataslak olduğundan eminim. Lütfen yorumlarınızdaki tüm duygularınızı bırakın.


Sonuçlar...

İnanılmaz tepkiler beni gerçekten hayrete düşürüyor, çoğu da yanlış anlamalarımı ve yanlış kararlarımı çok güzel bir şekilde gösteriyor. Bundan çok şey öğrendim ve öğrendiğim her şeyi umutla kullanmaktan heyecan duyuyorum! (Muhtemelen Haskell dahakine öğrenme başlayacağız değil - 20 yaşın üzerinde de olsa çok eski bir dil, hahaha ) ve daha sonra çevremdeki bazı diğer seçenekler bakarak başlayın.

Teşekkürler


10
"beş Python, C / C ++, Java, Perl ve LISP'in hepsini de öğrenin" (Eric Raymond, Nasıl Hacker Olunur -> Temel Hacking Becerileri -> 1. Nasıl programlanacağını öğrenin. )
gnat

7
Basitçe "eski" olmanın varsayılan olarak otomatik olarak "kötü" anlamına gelmediğine dikkat edin. Şimdiye kadarki en harika programlardan bazıları 30 yıl önce C64'te yapıldı.

8
Neredeyse her dilin kullandığı FWIW - Birisi hemen hemen herhangi bir dili kullandığınız için size gülerse (Java yavaş, .NET net M $ kaltaklar için, Haskell pratik değil, C ++ çok eski vb.) Hemen geri gülüp kullanmalarını söyleyin. iş için doğru araç;)
Martin

6
Nereden "Haskell ve ... popülerliklerini kaybettin"?
leftaroundabout

13
Genç bir programcı için, çok fazla varsayımınız var. Onlardan kurtulun, fikrinizi bulanıklaştırıyorlar.
Matthieu M.

Yanıtlar:


29

Büyük ölçüde farklı dilleri öğrenmekle ilgili olan şey, dilleri öğrenmekle ilgili değildir, sorunlara farklı yaklaşımlara maruz kalmakla ilgilidir. Araç kutusundaki araçlar olduğu gibi.

Unutulmaması gereken bir şey Haskell'in özellikle eski olmadığı ve aslında sadece ana dilleri bilen biri için çok iyi bir aday olduğu. Lisp gibi çok eski bir dil bile şeyler üzerindeki etkisinden dolayı öğrenmek çok faydalıdır.

Ayrıca, Java ve .NET yorumlanmamıştır ve bence bu yanlış etiketlemeye dayanarak bazı yanlış varsayımlar yaptığınızı umuyorum.


Woops, yorumlanan konu için üzgünüm. Orada iki farklı oksimoronik ifadeyi karıştırıyordum. Sorunun kendisinde düzelttim.
Freesnöw

19
Haskell , örneğin, Java'dan daha yaşlı. Ancak, evet, bu eski olduğu anlamına gelmez. Aslında, bu tip bir sistem hala Java'dan yaklaşık 2 yıl ileride.
Jörg W Mittag

5
@ JörgWMittag: Java hakkında Haskell'den daha çok şey ifade ettiğini düşünüyorum.
Tikhon Jelvis

1
Ben program sadece Haskell ve Java ... ama olmaya fuar, hiçbir ana akım dil Haskell gibi bir tip sistemi her yerde yakın olarak iyi sahiptir. (Söylemeliyim ki, OP ..._ lots_, Java'da söylediklerinizden daha fazlası.)
Louis Wasserman

1
Haskell şu anda 20 yaşın üzerinde ve standart Haskell standart C ++ kadar eski (ikisi de 1998'den beri).
fredoverflow

23

Formda kalın: Düzenli Uygulama Yapın

Pratik yapmak mükemmelleştirir.

Ne kadar çok kod yazarsanız ve okursanız , bir programcı / geliştirici / yazılım mühendisi / guru / ninja / zanaatkar / korsan / tercih edilen buzzword olarak aydınlanma / ustalığa yaklaşırsınız. Sadece daha fazla kod yazıp okuyarak değil, aynı zamanda yeni kod yazma yöntemlerimizi deneyerek, daha açık fikirli olanı (umarım) kalır.

Önerilen Kaynaklar:

Yeni Paradigmalar ve Dil Özelliklerini Öğrenme

Belki yepyeni Süper Dil-X’te kullandıklarınızı Kurumsal Dil-Y’ye çeviremezsiniz, ama belki ne zaman uygun olabileceğini anlayabilirsiniz. Belki projenizde farklı bir teknolojiyi veya yığını ne zaman belirli bir amaca uyacak şekilde entegre edebileceğinizi bileceksiniz. Veya belki de , X dilinin harika özelliğini taklit etmek için Y dilinin özelliklerini nasıl kullanacağınızı ve bundan faydalanmak için kodunuzu yeniden değerlendirebilir (ve yol boyunca diğer iş arkadaşlarınızı potansiyel olarak aydınlatabilirsiniz).

Örneğin, ilginç FP prensiplerini keşfedebilir ve tartışmaya göre tasarım olarak FP olmayan muhtemelen Java'ya uyarlamak isteyebilirsiniz .

Önerilen Kaynaklar:

Tüm esnaf jack ol ... Bazı usta?

Bu "deneysel" aşamadayken hangi dilin temel hale geleceğini bilmiyorsunuz, bu yüzden onlardan birine bahis yapmaktan endişe etmemelisiniz. Muhtemelen, diğer insanlar aynı bahsi yapacaktır ve özgeçmişinizde ortaya çıktıklarını görünce meraklanacaktır. Kemerinize bir alet ekleyin. Bizim durumumuzda, sonunda ne kadar ağırlığında pek bir sorun yoktur.

Tabii ki, tüm esnaf ustası olamazsın. Ama bir tanesinin ustası olabilirsin, gerisinde de oldukça iyi. Bir zanaat öğreniyorsun ve bizimki çok yönlü. Düzenli egzersizler yapmak, atölye çalışmalarına katılmak, bir kitap almak, yeni bir evcil hayvan projesi yazmak ve benzeri şeyler yapmak, alanımızdaki sürekli değişen hıza ayak uydurmanın yoludur.

Önerilen Kaynaklar:

Uyarlanabilir Kal

Uyum sağlamayı öğrenmiyorsanız, ihtiyacınız olduğunda yapmak zordur. Sürekli yeni şeyler öğrenerek, yeni şeyler toplarken her seferinde daha iyi ve daha iyi olursunuz (kendinizi çok benzer zorluklarla sınırlamadığınız sürece).

Sanki "Stay Young" Oasis şarkı devam: Stay Young ve yenilmez .

Uyum sağlayabiliyorsanız, hayatta kalabilirsiniz.

Önerilen Kaynaklar:

Görünür Kal: İşe Alım Ajansının Radarını Anla

Anahtar kelimeler ve teknolojiler onay kutuları olarak kullanılır. Bunları akılsız çalışanlar için bal tencere olarak kullanıyoruz.

Her iki yönde de çalışır. İşlerini gerçekten bildiğin sürece, özgeçmişinde birçok şey olması iyidir. Uyarlanabilirliğini ve bilgi genişliğini gösterir. Ayrıca, bunlardan birkaçına gerçekten hakimseniz ve birkaç tanesinde haklıysanız, özgeçmişinizin farklı sürümlerini farklı pozisyonlar ve işler için değiştirmenize izin verir.


Diğer Yardımcı SE Konuları


Eğer Paul Graham'ın Ortalama Ortamı Atma'yı okuyacaksanız (ya da programlama konusunda yazdığı herhangi bir şey, bunun için) bir tane tuzla alın. Programlama pratiği hakkında söylemesi gereken şeylerin çoğu% 50 doğru,% 50 tehlikeli.
Mason Wheeler

@MasonWheeler: Tartışmalı, bilinen endüstri "devleri" nden bulabileceğiniz birçok şey gibi, kendini beğenmiş ya da beğenmemiş. Pek çok insan, Zed Shaw'ın yazılarını da reddeder, diğerleri Norvig'inki gibi. Her şeye eleştirel bir zihinle yaklaşılması gerekir: Ben bunu herhangi bir şey için verilen olarak kabul ediyorum ve bu seviyede insanlar da olduğunu varsayıyorum (umuyorum). Birçok yazar, herkesin uydurmadığı, belirli bir durumun ışığında konular sunacak. Aslında, bunu burada her gün cevaplarda da görüyorsunuz, ancak "popüler" güçle "en iyi" cevaplar olarak saygı görecekler. Yine de, bilgilendirici.
haylem

8

Telastyn'in cevabını genişletmek için, aslında farklı programlama paradigmalarına maruz kalmakla ilgili . Örneğin, bu gerçekten mantıksal programlamayı öğrenmekle ilgili değildir, ancak:

  • öğrenmeyi öğrenme (yeni beceriler öğrenme pratiği)
  • Beyninizi yeni yöntemlerle düşünmek için eğitmek
  • belki de az insanın sahip olduğu ve kullanabileceği daha az popüler (hatta ezoterik) bir bilgi edinme
    • veya en azından teknik bilginizle onları etkileyin :)
  • ve tabii ki, değerli teknik içgörü sağlar. C # neden D'den daha popüler? C ++, D'nin yapabileceği her şeyi yapabilir mi? D daha fazlasını yapabilir mi yoksa daha çok sözdizimsel şekere mi benziyor?

http://skilldrick.co.uk/2011/02/why-you-should-learn-brainfuck-or-learn-you-a-brainfuck-for-great-good/

Brainf * ck öğrenmenin bir başka iyi nedeni, Turing-complete bir programlama dilinin ne kadar temel olabileceğini anlamaktır. Programcıların dilleri karşılaştırdığı zaman ortaya çıkan ortak bir argüman “hepsi Turing-complete” dır, yani bir dilde yapabileceğiniz her şeyin başka bir dilde yapabileceğiniz anlamına gelir. Brainf * ck'yi öğrendikten sonra, Turing-complete dilini kullanmanın ne kadar zor olduğunu ve bu argümanın su tutmadığını anlayacaksınız.

http://norvig.com/21-days.html (Peter Norvig)

En az yarım düzine programlama dilini öğrenin. Sınıf soyutlamalarını destekleyen bir dil (Java veya C ++ gibi), biri de işlevsel soyutlamayı destekleyen (Lisp veya ML gibi), diğeri sözdizimsel soyutlamayı destekleyen (Lisp gibi), biri tanımlayıcı özellikleri destekleyen (Prolog veya C ++ şablonları) koroutinleri (Simge veya Şema gibi) ve paralelliği destekleyen (Sisal gibi).


7

İlk düşüncem, C gibi bir şey öğrenmek ve daha sonra sıçrama tahtası için C ++ 'ı kullanmak (sadece güçlü bir anlayış / temel alacağımdan emin olmak için) kullanmaktı, ama daha önce de söylediğim gibi, her geçen gün daha da yaşlanıyor.

Bu devasa bir yanlışlık yığını. C tanıyan insanlar bir var zor C öğrenme zamanı ++, onlar dili nasıl kullanılacağını bildiğini düşünüyorum hemen hemen her şey yanlış dev kazık çünkü. Hemen hemen hiç iyi bir C ++ olan hiçbir deyimsel C yoktur. Basitçe C ++ 'ı sıfırdan öğrenmek daha iyi. Diğer insanlara yardım etmek için zamanlarını harcayan kendim gibi insanlar, C ++ 'ların büyük bir kısmını insanlara C alışkanlıklarını bırakmalarını öğretmek için harcıyorlar .

Popülerlik gelince, C ++ , son zamanlarda yeniden ortaya çıkması biraz yaşanıyor. İnsanlar aslında, performans fark yapar bir çok madde, ve bir yönetilen biri olarak her bileşenini çalıştıran uzak alamayan ve Modern C ++ (özellikle 11 C ++ ile) onlar olduğunu düşünmüş C çöp gibi kesinlikle bir şey değildir ve bu hiç de fena değil. Gerçekten yaşlanmıyor. Daha yeni oluyor. Yeni Standart büyük bir yükseltmedir ve şu anda kullanılan C ++ alanlarının çoğu için güncel ya da boru hattında uygun değiştirme dilleri yoktur. Bu en azından C ++ ile birlikte çalışabilirliği iyi dilleri (hatta C ++ 'ın) olmadığı için mevcut C ++ kod tabanlarından taşınmasını zorlaştırır.

Hatta ciddi bir sohbette VB.NET veya C # den bahsetsem de güler.

Yeni insanlar olsun. AFAIK, VB.NET, VB6'dan uzaklaşmasına yardım etmek dışında hiçbir sebeple gerçekten mevcut değildir ve kendi hakkı olarak gerçekten değerli bir hedef değildir, ancak C # gerçek bir dildir. Java gibi, çünkü gerçek dil özellikleri ve bazı güzel kütüphaneler eklediler. C # emmek değildir VS çok iyi araçları ile çok popüler, iyi desteklenmiş bir dildir o kötü ve öğrenmek için sağlam değilse istisnai, şeydir.

MONO kullanmadığınız sürece platformlar arası değildir (ki hala geliştirilme aşamasındadır ve yapılması gereken bazı iyileştirmeler vardır).

MONO oldukça kararlı. Ayrıca, sonuçta, masaüstü tüketicilerin% 90'ı (veya% 80 miydi?) Şu anda Windows kullanıyor. Bir masaüstü uygulaması geliştirecekseniz, Windows dışı kullanıcıların bir çapraz platform dili kullanıyor olsanız bile, desteklemeye zaman ayırmaya değer olup olmadıkları açık bir sorudur.

Sonuçta, C ++ ya da Haskell gibi bir dili öğrenmekten çok büyük bir çalışma zamanından ziyade güçlü derleyici teknolojisine odaklanabilirsiniz.

Sadece PHP'yi seçmeyin. Bundan öğrenebileceğiniz tek şey bir dil oluşturmamaktır.


1
C ++ standardına yapılan son ilavelerin önemli bir yüzdesi, mevcut C ++ kusurlarını yamalamak için sadece - geçmiş zamanlardaki önemli bir ekleme yüzdesi gibi - mevcuttur. Örneğin, Rvalue referansları, kopya oluşturucularla ilgili bir dizi performans ve karmaşıklık problemi etrafında çalışmak için bir sürü ekstra karmaşıklık ekler, çünkü yalnızca C ++ nesnelerin değer türleri olarak kullanılmasına izin verdiğinden,% 100 tamamen yanlış ve Başka hiçbir OO dilinin bunu yapmamasının iyi bir nedeni.
Mason Wheeler

@MasonWheeler En azından C #, D ve Eiffel, nesnelere değer türü olarak izin verir. Ve RAII , sistem programlaması için çok güzel!
fredoverflow,

@MasonWheeler: Rvalue referansları ayrıca mükemmel yönlendirme ve yalnızca hareketli türler sağlar. Performans, tanıtılmaları için üç ana nedenden yalnızca biriydi. Değer tipi nesneler gayet iyi. Ayrıca, elbette, kendi referansla yazılmış nesnelerinizi istediğiniz gibi C ++ 'da yazabilirsiniz.
DeadMG

Ayrıca, tüm bu performans problemleriyle bile, C ++ 'ın hala en hızlı dil olması komik.
DeadMG

1
@ FredOverflow: C # 'da tüm nesneler referans türleridir. Yapılar değer türleri olabilir, ancak nesneler olamaz ve bu çok iyi bir sebepten dolayı: nesneler değer türleri olarak kullanılırsa, devralma ve polimorfizme dev bir maymun anahtarı atıp her türlü çirkin saldırıyı kullanmak zorunda kalırsınız Bir kopya nesnesine bir soysal nesneyi atamak (veya geçmek) aslında o nesneyi atamak istemeyen kopya kurucuları gibi. İlk başta OOP kullanmanın esas noktası olan Liskov ikamesini tamamen mahveder. Bu korkunç bir fikir ve asla yakalanmadığı için memnunum.
Mason Wheeler,

6

Söylediklerin hakkında bir kaç yorum ...

1) Her programcı eski olsa bile C öğrenmelidir. Makineye yaklaşmak için harika bir dil. Joel'in tavsiyesinden CS öğrencilerine ...

Mezun olmadan önce C öğren

İkinci bölüm: C. Dikkat C ++ demedim. C gittikçe daha nadir hale gelmesine rağmen, hala çalışan programcıların dilbilgisi frangı. Birbirleriyle iletişim kurmak için kullandıkları dildir ve daha da önemlisi, ML, Java, Python gibi üniversitelerde öğretilecek olan "modern" dilden çok daha yakındır. günler. Makineye yaklaşmak için en az bir dönem geçirmeniz gerekir veya daha yüksek seviyeli dillerde hiçbir zaman verimli kod oluşturamazsınız. Asla etrafındaki en iyi programlama işlerinden bazıları olan derleyiciler ve işletim sistemleri üzerinde çalışamazsınız. Büyük ölçekli projeler için mimarlık oluşturmak için asla güvenilmezsiniz. Süreklilik, kapanış ve istisnaların nasıl ele alındığı hakkında ne bildiğiniz umurumda değil: eğer nedenini açıklayamazsan (* s ++ = * t ++); bir ipi kopyalarsa veya bu sizin için dünyadaki en doğal şey değilse, benim için batıl inanç temelinde programlıyorsunuzdur: ilgilendiğim kadarıyla: temel anatomiyi bilmeyen bir tıp doktoru, geçen eczane satış bebeğinin işe yarayacağını söyleyen reçeteler yazdı.

2) Diller, yaygın kullanılmasalar bile, zihniyet öğrenmek için iyi olabilir. Modaya uygun olmasa bile, işlevsel programlamayı anlamak için Düzeni (veya LISP) öğrenin. Gönderen bu gemide başka yazı .

Tebrikler, (bana) aslında bilgisayar bilimleri öğretmeye çalışan okullardan birkaçına gidiyormuşsunuz gibi geliyor. İlk dil olarak Öğrenme Programı (IMO) çok iyi bir şeydir. Hayır, diğerleri kadar ticari değildir, ancak bilgisayar biliminin gerçek özünü öğrenmek için mükemmel bir dildir. - Jerry Coffin 20: 11'de 3: 32'de

C, C ++ ve Java, bilgisayar bilimlerinin yan ürünleridir. Scheme'nin tüm kökleri bilgisayar bilimlerinde. Ticari kullanımdaki dillerin, McDonalds'ın mutfağı ile yaptığı kadar bilgisayar bilimi ile de ilgisi var. - JasonTrue 20 Ekim 11: 5'de

Bu adamlar doğru; bilgisayar programlarını bilgisayar bilimleriyle karıştırıyorsunuz - Dijkstra'nın dediği gibi, teleskop yapılarını astronomi ile karıştırmak gibi bir şey. Program, bilgisayar bilimlerindeki temel kavramları öğrenmek için en iyi dil hakkındadır. Bilgisayar bilimi diplomasına sahip olmanın Java'da iş kolu uygulamaları yazmayı öğrenmekle ilgili olduğunu düşünüyorsanız, yanlış programa kayıtlı olabilirsiniz. - Eric Lippert 20: 11'de 7: 40'da

Bildiğim hemen hemen tüm geliştiriciler C / C ++ 'ı kendi başlarına öğrendi. Bunun için üniversiteye ihtiyacınız yok. - mouviciel 20 '11 7: 48'de

Aynı nedenle, zooloji kursları, bir fil duraklatmasını engellemek yerine evrimsel biyoloji, anatomi ve hayvan davranışlarını öğretiyor - jk. 20:11 7:58

Şimdi, orijinal öncülünüze saldırmanıza rağmen, merakınız için takdir edilmeniz gerektiğini düşünüyorum. Merak eksikliği nedeniyle çok fazla insan eskimiş hale geliyor. Kişisel gelişiminizden faydalanmak, iyi gelişeceğinizin harika bir işaretidir. En çok öğrenen insanlar işlerin nasıl yürüdüğünü sormaya devam etmek isteyenlerdir.


1
“Bildiğim hemen hemen tüm geliştiriciler C / C ++ 'ı kendi başlarına öğrendi. Bunun için üniversiteye ihtiyacınız yok.”: Burada aynı. Üniversitemde bize C'ye ödevler verdiler ama bize C kursu vermediler. Bizi Bilgisayar Bilimi öğrencilerinden bir kitap alıp öğrenmelerini beklediler.
Giorgio

1
C'yi öğrenmek zorunda kalmak oldukça işkencedir. Benim sempatilerim.
DeadMG

2
Aslında C'yi öğrenmenin kolay kısmıydı, gerçek işkence C ++ 'a geçmemiz gerektiğinde başladı. ;-)
Giorgio

3

Öğreneceğin herhangi bir dil önümüzdeki 5 yıl içinde değişecek. Bu, bir süre civarında olabileceğini düşündüğünüz bir dili öğrenmekle ilgili değil, nasıl öğrenileceğini öğrenmekle ilgilidir. Dili öğrenmeye ve bu dili öğrenme sürecine daha fazla maruz kalmak, uzun vadede size büyük ölçüde yardımcı olacaktır!

Çalıştığım son şirket kendi kurum içi dilini kullandı. Görsel temele benzerdi ama aynı değildi. Diğer dilleri bildiğim için, dillerini diğer çalışanlardan daha hızlı toplayabildim.

C ++, BASIC, Pascal öğrendim sonra Japonca öğrendim ve bir bilgisayar dili ve bir yabancı dil öğrenmenin aynı becerileri aldığını söyleyebilirim. Bu beceriler kaybolabilir veya keskinleştirilebilir. Sürücünüz varsa, devam edin ve yeni diller öğrenin!

(ps. FORTRAN veya derleme öğrenmek için, eski dillerin en az bir sömestrini almanın değerli olduğunu düşünüyorum. Yeni dilde aldığınız şeyleri, bayraklar, bellek tahsisi vb. .)


3

Programcı olmak istiyorsan, olabildiğince çok "eski" dil öğrensen iyi olur. Lisp ile başlayın, Forth'u iyi tanıyın, tüm Wirth dillerinin gelişimine, Fortran'ın evrimi, Prolog'un yükselmesi ve çöküşüne, gizli Ada ekosistemine gizlice yaklaşın, Occam'ı öğrenmekten gizli silahınızı alın. “Ana akım” ı kovalamak, aday bir programcının yapabileceği en aptalca şey.


+1: Tamamen katılıyorum. Haskell, Scheme, Scala, SML, vb. Gibi daha az yaygın dillerle deneyimler yaparken edindiğim birçok ilginç fikir
Giorgio

2

Olayların açıklanması konusunda seninle aynı fikirdeyim. Java, C, C ++, Javascript, Python, Ruby ve biraz .NET bilsem de (öncelikle M $ <- kişisel görüşünden nefret ediyorum çünkü) D'de programlamayı çok sevdiğimi söylemek zorundayım.

D gerçekten güzel bir özellik setine sahip (çoğu C ++ / Java (sınıf soyutlamaları olan diller) vb.) Ama kesinlikle en çok sevdiğim şey jenerikler ve delegeler (geri aramaların uygulanmasını kolaylaştırıyor). Bunun dışında C ++ ile karşılaştırıldığında başa çıkacak çok daha basit bir sözdizimi elde edersiniz. D gerçekten verimli bir çöp toplayıcıya sahiptir, ancak hafızayı kendiniz kullanmayı seçebilirsiniz (özellikle C / C ++ modülleriyle etkileşime girdiğinde). D, kullanıcı girişi engellememesi gereken kullanıcı destekli modüllere sahip olmamasına rağmen. Mevcut C / C ++ kütüphaneleriyle (bolca) kolaylıkla arayüz oluşturabilirsiniz, böylece modül gereksinimi için gereksiz hale gelir.

D, tüm yaygın programlama problemlerine ihtiyaç duyan kendi standart kütüphanesine (Phobos) sahiptir. Ayrıca, Phobos ile veya kendi başına kullanabileceğiniz alternatif bir kütüphane ( Tango-D2 ) bulunmaktadır. Bir web geliştiricisiyseniz ve olaya dayalı bir sunucu yazma ihtiyacı duyuyorsanız, Tango iyi bir Seçici soyutlamaya sahiptir (tango.io.Sadece select (), poll (), epoll () için Seçici). Libev'den bile daha iyi bir performans gösterdiğini öğrendim.


D öğrenmesini onaylamadığımdan değil, ama zaten statik olarak yazılmış, OO ve prosedürel, düşük seviyeli olmayan dilleri bilen biri için, kesinlikle farklı bir paradigmayı vurgulayan veya metale biraz daha yakın olan bir dil öğrenmek daha değerli. D hakkında da pek deneysel değil.
leftaroundabout

1
Kabul. OP’lerin sorusunun “deneysel” olarak, sabit olmayan / kurumsal desteği destekleyen / ana akım olmayan bir şey olduğunu düşünmüştüm. Ve "deneysel" olmak için farklı paradigmaların uygulanması olsanız bile, orada sadece birkaç paradigma var sanırım. Dillerin çoğu birini ya da diğerini uygular. Ardından, eldeki iş için hangi dilin daha iyi / daha hızlı / kullanımı kolay / en iyi olduğu anlaşılıyor. Bu faktörler programlayıcıdan programlayıcıya farklılık gösterir.
Shripad Krishna,

1

Diller, bir tür etki alanındaki (en azından ilk başta) sorunları çözmek için geliştirilmiştir. Aletlerinizin rahat edeceğiniz şekilde çözemediği bir sorunla karşılaşmadıysanız, bir marangoz olmayı bekleyen bir tahta kalas çekeceksiniz. Dillerin çözmeye çalıştığı sorunları anlamaya çalışın. "Deneysel" bir dil ile yeni / havalı bir havalı adam dili arasındaki tek fark, onu destekleyen paradır, örneğin google ve Dart'dan git. Arka bahçemde geliştirildiyse, muhtemelen bazı forumlarda ölecekler ve hepsi bu. Yalnızca çözmeye çalıştıkları sorunları açıklamakta başarılı olduklarında hayatta kalırlar. Veya Perl ve C ++ gibi, hayatta kalmaya devam etmek için problem çözme yollarını özmede iyi olan diğer yollar. Ve Lua'yı öğrenmeyi önerebilirim. programların içine yerleştirilmek için hazırlanmış bir dildir; çok hızlı ve hafiftir; Java gibi bazı dillerin basit bir şekilde çözemediği büyük veya küçük sorunları çözmeniz için araçlar sunar. Japonca örneğini alarak, sözdizimini, gramer ve alfabeleri öğrenirseniz, kültürü görmezden gelirseniz, neden bu kadar karmaşık olduğunu asla anlayamazsınız ve sonunda her şeyi unutursunuz. Bu senin için hiçbir şeyi çözmüyor.


1

Birden fazla farklı dil öğrenmek, size programlama hakkında daha geniş bir görünüm verecektir. "Farklı" nın vurgulanması - örneğin, C # ve Java öğrenmek, bunlardan sadece birini öğrenmekten çok daha fazlasını öğretmeyecektir. Fakat C # veya Java'yı öğrenmek ve işlevsel bir dil (örneğin).

Bunu söyledikten sonra, genç bir programcı olarak, farklı dil türlerine bakmadan önce bir dili gerçekten sağlam bir şekilde tanıma konusunda çok daha fazla değer kazanacağınızı düşünüyorum. Java, VB.NET ve C # dillerini ne kadar iyi tanıdığınız sorunuzdan tamamen anlaşılmıyor. Yukarıdaki dillerden birini kullanarak bir projeye saldırırsanız, darboğazınızın dil bilginiz değil, projenin kendisi olacağından emin misiniz? Kendinize "Bu dili nasıl yaparım ?" Diye sormak için daha fazla zaman harcarsanız. Asıl sorun hakkında düşünmek için harcayacağınızdan, o zaman muhtemelen şu anki dilinizden birine odaklanmanız gerekir.

Ve şahsen bence hangisinin olduğuna karar vermek için pragmatik bir yaklaşım izlemelisin. Java Android uygulamaları için kullanılır? Harika, Android uygulamaları yapmak ilginizi çeken bir şey ise. Değilse ilgisiz. C # Windows olmayan geliştirme için uygun değil mi? Linux için geliştirmekle ilgileniyorsanız kötü haber. Eğer değilsen ilgisiz. Ve bunun gibi.

Ve bahsettiğiniz "deneysel" dilleri? Pragmatik olarak, diğer insanlarla çalışmak söz konusu olduğunda, daha zinde olacaklar - muhtemelen Fantom'u tanıyan herkes için C # veya Java bilen binlerce kişi bulacaksınız. Kişisel projeler için bu mutlaka bir sorun değildir. Amacınız istihdam edilebilirliğinizi artırmak ise,


1

Postscript veya APL gibi bir dilde programlamayı öğrenmenin muhtemelen zaman kaybı olduğunu söyleyebilirsiniz, çünkü bu bilgiyi kullanma şansınız sıfıra yaklaşıyor. Fakat aynı damardan, Ruby ve Python'un onları hiçbir şey için kullanmayı düşünmüyorsanız zaman kaybı olduğunu iddia edebilirsiniz.

Ancak çok az kişi Lisp'i Lisan yazabilmek için muhtemel olsa da, Lisp'i öğrenmenin bir israf olduğunu söyler; fakat Lisp'i öğrenmek size probleminiz hakkında farklı düşünmeyi öğretir (umarım), bu yüzden çoğu programcı size zaman ayırmaya değer olduğunu söyleyecektir.

Yine de, yeni bir dil öğrenmek konusunda asla utanmam, çünkü gerekli zaman yatırımı gerçekten sadece bir veya dört saat. Ve en alışılmadık yerlerde Lua gibi bir dil kullanır ve örnekler üzerinden birkaç saat geçirmeseydiniz onları asla tanımazdınız.

Yeni bir dil gördüğünüzde, bunun neye yarar olduğu hakkında biraz bilgi edinin. Eğer bir nişse, en sevdiğiniz diller pek iyi örtmez, temelleri öğrenmek için bir gün ayırın. Bachelor'un 17. sezonunu izlemekten çok daha iyi zaman harcıyorsunuz, aksi halde zamanınızı harcayabilirsiniz. Bu şekilde, bir kullanımınız varsa, aklınıza gelebilir ve daha fazlasını nerede bulacağınızı bilirsiniz.

Şahsen gerçekten gitmek için bakmanızı tavsiye ederim. C veya C ++ 'da üç gün ve 13 üncü parti kitaplıktan daha uzun süren ve hatta Python, C #, Ruby, vb. Programlarda bile mümkün olmayandan daha iyi performans gösteren tek sayfalık programlar yazmak için kullandım. gerçekten, gerçekten, gerçekten onların eşyalarını bilen insanlar tarafından.


-1

Farklı tipleri olanları seçin. Bunları özelliklere göre gruplayın ve her gruptan birini seçin. Bunu profesyonelce yapmak istiyorsanız, kullanılan birini seçin (bu nedenle şablon metaprogramlama ile statik olarak yazılmış derlenmiş dil için D + 'dan D + +).

Zavallı D, iyi bir dil, ancak C ++ 'ın katil uygulamasından yoksundu: zamanın # 1 dili ile neredeyse geriye tam uyumluluk (C ++' un durumu için C). Güzel, ama bu önemli küçük gerçek muhtemelen D'yi tarih kitaplarında gösteriye statüsüne alacak.


-2

C eski olabilir, ama yine de çok güçlü ve ilginç, C'yi öğrenmek "programlama" geleceğinizde size çok yardımcı olacak.

Java yavaş değil, kim ne hakkında konuştuğunu bilmediğini kim söylese, Java size OOP hakkında bir ton öğrenir.

Neden Python ile başlayıp sonra C ya da başka bir şey için gitmiyorsun?


C aynı zamanda mikrodenetleyicilerin lingua franca'sıdır (sadece 4K'ya sahip olduğunuzda 8K çalışma zamanı sağlayamazsınız). Yalnız bu alanda, C'nin önünde aktif kullanım için on yıl daha iyi bir kullanım hakkı vardır.
TMN

Java yavaş çalışıyordu - ilk birkaç yıl içinde hızlı bir şeytandan daha azını hatırlıyorum. Bazı insanlar performansın hiçbir zaman iyileşmediğini düşünüyor.
MetalMikester
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.