Bilgisayar dil poliglotu olmaya değer mi? [kapalı]


14

Programcıların kendilerini geliştirmek için birçok farklı dil öğrenmeleri gerektiğini sık sık duyabilirsiniz. Hala okula gidiyorum ve büyük programlama deneyimim yok (yıldan biraz fazla). Ancak programlama becerilerini geliştirmek için asil niyet bir tür OKB'ye dönüştü: Nispeten bilinen tüm programlama dillerini öğrenene kadar sakinleşmeyeceğimi hissediyorum .

Ve işte sorunun kendisi: Programlama dilleri olmak çok dilli gerçekten size yardımcı olacak mı (Ve her zamanki "Programcı en azından tüm paradigmaları bilmeli" demek istemiyorum, gerçekten duyduğunuz tüm diller demek istiyorum)? Benzer tecrübesi olan var mı? İşe / beceriye / kariyere yardımcı olur mu? Bu becerileri ne sıklıkla uygulayabilirsiniz?


3
İnsanlar başkalarına yeni diller hakkında bilgi vermelerini önerdiğinde, dil öğrenmekle ve yeni paradigmalar öğrenmekle daha az ilgili olduğunu düşünüyorum. İki ana dilim Python ve C ++, Haskell'i öğrenmek benim için harika bir deneyim oldu, çünkü beni aksi takdirde düşündüğümden farklı bir şekilde düşünmeye zorluyor.
Vitor Py

4
Tüm ana paradigmaları bilmek gerçekten yardımcı çok . Kendi dillerinizi tasarlıyorsanız, ilginç dillerin en azından bir kısmına maruz kalmanız biraz yardımcı olabilir (ve Dil Odaklı Programlama paradigmasına girer girmez bunu muhtemelen yapabilirsiniz).
SK-logic

4
"Programlama hakkında düşünme şeklinizi etkilemeyen bir dil bilmeye değmez." (Alan Perlis). Amin.

2
@Job, 10 programlama dilini bilmek, tek bir konuşma dilinin temellerini öğrenmek için gereken çabanın sadece küçük bir kısmını alır.
SK-logic

2
@ SK-mantığı bağlıdır. Bahse girerim 6 yaşındaki bir çocuğa daha hızlı İspanyolca konuşmayı öğretebilirim, sonra ona piton öğretebilirim.
Raynos

Yanıtlar:


10

"Programcı en azından tüm paradigmaları bilmeli"

Bu yardımcı olur

Yani gerçekten duyduğun tüm diller

Bu yardımcı olmuyor. Tüm paradigmaları bildiğiniz halde haftada bir dil öğrenebilirsiniz.

Bir hafta, o dile ihtiyaç duyduğunuzda bu dili öğrenmek daha kolaydır .

İyi bir programcı tembel bir programcıdır

Kenar notu:

Ortak / popüler dilleri öğrenmek "tüm paradigmaları" öğrenmek kadar yararlı değildir. Birincisi ikincisini kapsamaz. Örneğin Benliği öğrenmek, prototip OO'yu anlamak için inanılmaz derecede faydalıdır. Yaygın veya popüler bir dil değil, ama yakut bildiğinizde python öğrenmekten çok daha kullanışlı.

Dil tasarımı:

Çoğu dili bilmek, yeni bir dil yazmanız / tasarlamanız durumunda faydalıdır. Yani bunun için sağlam bir kullanım durumu var, ama oldukça niş.

Bunun yerine ne tavsiye ederim:

Kodu Oku Tamamlandı 2 en az 3 kez

Diller "popüler olana" bağlı olarak sola ve sağa gelir. Teknoloji eğrisinin nasıl olduğuna bağlı olarak aylar veya yıllar sonra teknoloji kullanımdan kaldırılıyor. (Web teknolojiyi her 6 ayda bir kullanımdan kaldırıyor).

Programlama tekniği ve Bilgisayar Bilimi teorisi her zaman aynı kalır.


Ancak dillerde birçok ilginç küçük özellik var ve zaten bilinen paradigmadan yeni dil öğrenmek bile aklınızı başınızdan alabilir (örneğin benim için Smalltalk'dı)
Anton Barkovsky

@AntoBarkowski bu yanlış bir ifade, SmallTalk'ı diğer OO dilleriyle karşılaştırmayın. Java / C ++ / C # / vb. gerçek OO dili değildir . Tabii ki SmallTalk öğrenmeye değer, ama aynı paradigma değil;)
Raynos

6
İnsanlar "haftada bir dil öğrenebilirsiniz" diyorlar ama bu doğru değil. Elbette, o dilde sözdizimsel olarak doğru kod yazabileceksiniz, ancak bundan daha fazlası var. Örneğin, C # ve Java sözdizimsel olarak çok benzer ve her ikisi de OO dilidir. Ancak Java kodunu C # 'a yazmak sizi bir C # programcısı yapmaz.
R0MANARMY

3
@ R0MANARMY "<iyi programcılar> bir hafta içinde bir dil öğrenebilir". Bir dil kitaplıkları, çerçeveleri ve API'leri içermez. İyi programcılar tanımım çok yüksek olabilir .
Raynos

1
@ R0MANARMY, bahsettiğiniz o küçük, önemsiz anlamsal bitlerden hangisinin anlaşılması bir saatten fazla sürebilir?
SK-logic

4

Bu, birçok dilde nasıl kodlanacağını bilmekle ilgili değil, dediğin gibi paradigmalar hakkında. Ne kadar çok seçenek bilirseniz o kadar iyidir. Birden fazla dil bilmek kesinlikle yardımcı olur, ancak aynı dil türlerini öğrenmeye devam ederseniz, hızlı bir şekilde çıkmaz noktaya ulaşırsınız.

Anahtar, projenizin bir bölümünü uygulamak için hangi dilin / sistemin en iyi olduğunu bilmektir. Tek bir ana dile karar vermiş olsanız bile (çoğu projede olduğu gibi), yazmanız gereken her türlü araca, komut dosyasına, otomasyona ve destek oluşturmaya devam edersiniz. Genellikle çeşitli diğer diller veya araçlar, ana dilinizden daha iyidir.

Sadece açıklığa kavuşturmak için, gerçekten duyduğunuz tüm dilleri denemeyi ve öğrenmeyi aptalca buluyorum: bunlardan yüzlerce var ve genellikle diğer dillerde küçük değişiklikler var.


3

IMHO, öyle değil. Birincisi, bir yıldan az bir süre içinde bir dil öğrenemeyeceğiniz için. İçine kod yazabilmek 2 gün sürer, ancak verilen dil için akıcı ve iyi biçimlendirilmiş kod yazmak çok fazla deneyim gerektirir. GC neden olduğu gibi çalışır, nerede bellek daha hızlı tahsis edilir, hangi yapılar daha hızlıdır, dizeleri doğru bir şekilde nasıl birleştirirsiniz, dilin tehlikeli köşeleri nelerdir, vb.

Çok sayıda Java geliştiricisi korkunç C ++ kodu yazarken, C ++ geliştiricisi olarak korkunç Java / .NET kodu yazıyorum.

Diğer dilleri öğrenmenin en iyi yanı, yeni paradigmalar öğrenmeniz ve belki de somut bir sorun için daha iyi bir araca sahip olmanızdır. Diyelim ki - çok hızlı, halka açık olmayan bir GUI uygulamasına ihtiyacınız var, .NET orada yeri doldurulamaz.

Ancak .NET'te yapıları kullanmamanız veya C ++ 'daki her nesneyi sızdırmamanız için bir dil öğrenmek çok zaman alır. Bence tasarım ilkelerini, platformları ve tercih ettiğiniz dili öğrenmeye harcamak daha iyidir.

Ama bu sadece benim düşüncem.


2
"çünkü bir yıldan az bir süre içinde bir dil öğrenemezsiniz" Yanlış. Bir dili öğrenmenin, ortaya koyduğu popüler çerçeveleri öğrenmeyle karıştırmayın. Ayrıca sondaki listeye "genel programlama teknikleri" ekleyin.
Raynos

@Raynos: Ne demek istediğini anladım.
Steven Jeuris

1
Yeni bir dille oynamamın en sevdiğim yolu, iyi bir alt küme için bir derleyici uygulamaktır. Toplamda dili anlamak ve ondan en iyi özellikleri tanımlamak ve çalmak 2-4 saat sürer. Neredeyse bir yıl değil, bir gün bile.
SK-logic

1
Eğer büyük bir C ++ projesine katılıyorsanız ve "10 yıldır Java'da program yapıyorum, ancak son 6 ay C ++ için harcadım, bu yüzden dili biliyorum" gibi kelimelerle bir röportaj yaptıysanız. Bu iş için yüksek ücretli üst düzey pozisyon alacağınızdan şüpheliyim. Yani, hayır, hala bir ay içinde bir dil öğrenemeyeceğinizi düşünüyorum.
Coder

2
@Coder, büyük bir C ++ projesine katılıyorsanız ve "C ++ dahil 10 yıldır 20 dilde programlama yapıyorum" gibi kelimelerle bir röportaja gelirseniz, muhtemelen bir iş alırsınız.
SK-logic

2

O kadar pratik değil biliyorum onları, ama bilmen gereken çok yararlı olabilir hakkında onlara. Bununla kastettiğim, yeni bir sorunla karşılaştığınızda, "[diğer dilin] böyle sorunları çözmek için üstün bir yolu olduğunu belirsiz bir şekilde hatırlıyorum. Buna bakmalıyım" diyebilirsiniz.


SE Radyo gibi podcast'lerin bunun için iyi olduğunu düşünüyorum. Genellikle işe gidip gelirken dinlemek için doğru uzunluktadırlar ve bu şekilde çok şey öğrenebilirsiniz. Ama onun formu neden <X> İlginç.
Zachary K

1

Etki alanı bilgisi oluşturarak ve sonra çok sayıda programlama dili öğrenerek kariyerinize daha fazla yardımcı olacaksınız. Kendi dilinizde bir profil oluşturucunun nasıl kullanılacağı, hata ayıklayıcı için aynı, en iyi GUI çerçevesi ve bununla nasıl hızlı bir şekilde programlanacağı gibi diğer araçların ödünç verilmesi ile var olan ekstra araçları öğrenmeniz gerektiğinden bahsetmiyoruz. ve dile özgü deyimler.

Aynı şeyi yapmanın birçok yolu yerine daha fazla şey yapmayı öğrenmek de daha akıllıca olacaktır.


1

Bileşenlerin birden çok dilde yazıldığı çeşitli sistemlerde çalıştım (en kötü suçlu Ada 83, C, Fortran 77, SQL ve DCL'de yazılmış kod teslim etmemi istedi, oysa son işim C ++ ve Java kodu teslim etmemi istedi ). ! Yani, evet, sen (onları üretken verimli = yetkin olması için yeterince birden fazla dil bilmek gerekir gerçek dünya durumlar vardır; derin bir C uzman ++ olmaya gitmiyoruz ve Java ve sürece ... (bir ucubesin).

Bunun ötesinde, birden fazla dil öğrenmek için zaman ayırdığınız noktası ayrı yardımcı olmaktır kavramları gelen uygulanması . Benim için, OOP, birden fazla OOPL ile çalışana kadar mantıklı gelmedi. Ayrıca, kariyerinizin bir noktasında, vitesleri hızla değiştirmek ve tamamen yeni ve tanıdık olmayan bir şey üzerinde çalışmaya başlamak zorunda kalacaksınız ; Eğer ötesinde streç için şimdi vakit ayırdığınız ihtiyaç irade yardım markasını biliyor o durum meydana geldiğinde geçiş kolaylaştırılmıştır.


1

Bence mümkün olan her dili öğrenme ihtiyacına başlamadan önce birkaç farklı dili ve daha sonra en az bir tane derinlemesine öğrenmeniz daha iyi olacaktır. Minimum miktarda genişliğe sahip olduğunuzda, derinlik bir geliştirici olarak ilerlemeniz için gerçekten önemli hale gelir. Bir ya da iki dilde derinliği olan ve diğerlerinden bir kaçının, her şeyi saçan birinden daha çok görürdüm. Derinlik kazanmak başka bir paradigma öğrenmek gibidir, programlama hakkındaki düşüncelerinizi değiştirecek ve gerçekten karmaşık heyecan verici projelere kapı açacaktır.


0

Birçok dili konuşmayı öğrenmek gibi. Hepsini faydalı olma noktasına kadar öğrenmek neredeyse imkansız. Kullanmanız muhtemel olanlara sadık kalın ve daha iyi olursunuz. C ++, C # ve Java'yı oldukça iyi öğrenebilirsiniz, ancak Perl, Python, VB (VB.NET değil), Ruby ve JavaScript'te aynı anda profesyonel bir seviyeye sıkıştırmaya çalışmak sadece aptalca. Gün içinde becerilerinizi aynı anda devam ettirmek için yeterli saat yok.

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.