Yeni bir dil öğrenmek için çok erken mi? [kapalı]


11

Kişisel bağlam: Üniversitede son 6 aydır resmi olarak C ++ öğreniyorum. Bundan önce bir yıl boyunca JavaScript'te dinlendim. Şimdi bir aylık okul dışında Python öğrenmeyi düşünüyorum.

Odağımı öğrenme sürecine erken bölerek öğrenmemdeki verimliliği düşürüyor muyum? Ayı C ++ ile devam ettirmeli miyim? Yoksa yeni bir dil öğrenmek için asla çok erken değil mi?


6
Genel olarak programlamayı anlarsanız, yeni diller öğrenmek daha iyi bir programcı olmanıza yardımcı olacaktır. Programlamaya yeniyseniz ve akış kontrolü, veri türleri, işlevler / yöntemler vb. Gibi şeyleri anlamadıysanız, diğer dilleri öğrenmek için beklerim.
Muffin Man

Bahsettiğiniz her şeyle C ++ 'da oldukça rahatım.
Beklenti

1
Sorunuzu perspektife yerleştireceğim. Üniversiteye girdikten sonraki ilk 6 ay içinde 5 farklı programlama diliyle tanışmıştım. Assembly (tam olarak Moto platformunu unuttum), C, C ++, Visual Basic 6 ve Java. Daha sonra Basic, C #, Visual Basic .NET, x86 Assembly öğrenmeye devam ettim. Üniversiteden sonra ilk 2 yıl içinde en az 5 ek programlama dili öğrendim.
Ramhound

2
Çoklu görev yapabilir, öncelik verebilir ve öğrenmeye disiplinli bir yaklaşımınız varsa, elbette devam edin ve ikinci bir dil öğrenin. Genellikle ilk dile odaklanmak ve ustalaşmak en iyisidir. Ancak, çeşitli programlama paradigmalarını öğrenmek de önemlidir. Ne demek istediğimi görmek için aşağıdaki bağlantıların programlama bölümünü okuyun: Her Bilgisayar Bilimi Binbaşı Ne Bilmeli ve Programcı'nın Yetkinlik Matrisi
Anthony

Yanıtlar:


8

Python ile yaşadığım deneyim, merhaba dünyasından sadece biraz daha karmaşık bazı oyun kodlarıyla sınırlıdır, bu nedenle bu özellikle python için çok derinlemesine bir cevap olmayacaktır, ancak bunu söyleyebilirim:

Diller arasındaki farklar sözdizimi ve belirli dil özellikleri farklı olacaktır (hataların ele alındığı farklı yollar, G / Ç yetenekleri ve derleyicilerin girdinizi yürütülebilir bir şeye nasıl dönüştürdüğü gibi), ancak C ++ ve Python'un ikisi de aynı paradigmalar, böylece problem çözme her iki dilde de aynı şekilde yapılabilir. Hem C ++ hem de Python Zorunlu ve Nesneye Yöneliktir, bu nedenle C ++ ile aldığınız problem çözme tekniklerini kullanarak yeni sözdiziminde ustalaştıktan sonra C ++ ile rahat olursanız muhtemelen oldukça hızlı bir şekilde python alacaksınız. İsterseniz, fonksiyonel programlama için de Python'u kullanabilirsiniz, ancak bu parçaya hiç dokunmadım, bu yüzden size çok fazla şey anlatamam.

Çok erken mi? Hikayenizden kesinlikle evet ya da hayır diyemem. Zaten C ++ ile tam (GUI) uygulamaları yazmak için yeterince emin misiniz? (yani kütüphaneleri, jenerik ve / veya şablonlama gibi daha karmaşık dil özelliklerini kullanın) Yeni bir dil paradigmasını öğrenmenin aynı paradigma ailesinde yeni bir dil öğrenmekten çok daha zor olduğunu düşünüyorum. Yeni paradigma bölgesine adım attığınızda, o paradigma ile ilgili sorunları nasıl çözeceğiniz konusunda iyi bir fikir edinmek için çok daha fazla zaman harcamanız gerekecek. OO dilleri arasında, mirasın nasıl ele alındığı ve performansı etkileyen bir işleve bir parametre / bağımsız değişken ilettiğinizde verilerin belleğe nasıl aktarıldığı konusunda farklılıklar vardır. Ancak bu işlemin başlaması genellikle ilk başta önemsizdir.

Benim tahminim, C ++ ile süslü bir şekilde merhaba dünyadan daha fazlasını yapmak için yeterince eminseniz, lansman için uygun olmanızdır. Birçok dili yüzeysel olarak öğrenmek, kullanılan dilden bağımsız olarak kod örneklerini anlamanıza yardımcı olacaktır, ancak kendi kodunuzu oluşturmak, dillerin nasıl çalıştığı ve birbirlerinden nasıl farklı oldukları hakkında biraz daha fazla bilgi gerektirir.

PS Yeni bir dili yüzeysel olarak nasıl kullanacağımı öğrenmek istediğimde, genellikle dil sözdizimi ve yüzeysel çalışmalar hakkında fikir edinmek için aşağıdakileri deneyeceğim:

  • Merhaba dünya (Ekrandaki metin)
  • Merhaba dünya bir dosyaya yazılmıştır (bu dil için dosya G / Ç ve genellikle diğer G / Ç türlerine ilişkin temel bilgileri öğretir)
  • Hem tamsayı hem de kayan nokta olmak üzere farklı bazlarla (10, altıgen, sekizli) bazı standart hesaplamalar yapmak. (kesme ve sayı gösterimi hakkında bilgi verir)
  • Süslü bir diyalogda merhaba dünyayı göstermek için bazı grafik kütüphanelerini kullanmayı deneyin. (kitaplıkları ve harici kodu nasıl kullanacağınızı öğretir)

Son paragraftaki sonuç açıklamaları mükemmeldir. C ++ 'da tam uygulamalara sahip olmasam da, sadece yüzeysel olsa bile, bildiğim şeyin kapsamını genişletme konusundaki argümanınızı takdir ediyorum.
Beklenti

6

Eee, tabii ki oyle.

Şüphe yok, bazen yeni bir programlama dili öğrenmek için çok erken.

En basit durum, bir el-stinko dilinin ortaya çıkması ve herhangi birinin uygunluğunu göstermeden önce, öğrenerek beyninize zarar vermenizdir. Akla gelen bir çift BASIC, FORTH ve APL'dir.

Daha karmaşık bir durum için, büyük bilgisayar bilimcilerinden biri, kısaca ifade edilen bu sorunu, uygulamanın kalıcı hale getirdiği ve dilin daha temel bir anlayışı bozmaması için bilgisayar dillerini öğrenmeden önce öğrenilmesi gereken birçok disiplin olduğunu açıklamıştır. . Onun sözleriyle:

Kullandığımız araçların düşünme alışkanlıklarımız ve dolayısıyla düşünme yeteneklerimiz üzerinde derin ve dolambaçlı bir etkisi vardır.

Sadece programlamaya dalmanın rakibi Edsger Dijkstra olarak adlandırıldı ve çok seçkin bir kariyeri vardı. Aşağıdaki alıntı ile ACM Turing Ödülü'ne layık görüldü:

Yüksek, entelektüel bir meydan okuma olarak programlamaya temel katkılar için; sadece ısrarla hata ayıklamakla kalmayıp, programların doğru bir şekilde oluşturulması gerektiğine dair etkili ısrar ve pratik gösteriler için; program tasarımının temellerindeki sorunların algılanmasının aydınlatılması için.

Programlama dillerinin erken öğrenmesini sağladığı makale:

"Gerçekten Bilgisayar Bilimi Öğretmenin Zulmü Üzerine" http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF

Ayrıca, lütfen beni alevlendirme, ben sadece elçiyim.


"BASIC ile başladım ve yaşam için yaralandım" - bu tür fikrinizi çürütmez mi? Daha önce başka programlama dillerine tanıtılmış olsaydınız, BASIC böyle güçlü bir etki yapmaz mıydı?
tdammers

Sanırım bir ifadeye ihtiyacım vardı. Eğer yardımcı olursa, o cümleyi sildim.
GeliştiriciDon

3

Yeni bir dil öğrenmek için çok erken mi?

Evet derim. Başınızı hala bilgisayarın söylediğiniz şeyi yapabileceği kavramının etrafına sarıyorsanız, ikinci bir dil öğrenmek muhtemelen sizi şaşırtacaktır.

Ancak, bilgisayarın tam olarak söylediğiniz şeyi yaptığını fark ettiğiniz noktayı geçerseniz , ne kadar aptal olursa olsun, o zaman ilk dilinizi bir saniyeye (ve üçüncü !) dil odağınızı bozmaz.


2

İkisini de yapamaz mısın ?? Ben C ++ bir proje yapmak ve Python bit öğrenmek (sadece çok güzel olduğu için), Python kullanarak ProjectEuler.net sorunları çözebilir

Genel olarak, bir dil öğrenmek, onu bırakmak ve yeni bir dil öğrenmek için kötü bir fikir olduğunu düşünüyorum. İlk aşamalarda farklı paradigmalarla çalışmak esnek olmalıdır. Ama tam da böyle düşünüyorum.


ProjectEuler.net harika görünüyor! Tavsiye için teşekkürler.
Beklenti

2

Pratik bir programcıya, yeni bir dil öğrenmek neredeyse hiç kötü bir fikir değildir. Bir üniversite öğrencisine, hangi derslerin geleceğine bağlı olarak, biraz dikkatli olmalıyım. Bunun nedeni, bir okul sınavında, hatalarınızı kolayca gösterecek bir derleme / yürütme ortamından yararlanmadan dil ayrıntılarını sık sık okumak zorunda olmanızdır.

Özellikle sadece birkaç aylık deneyiminiz olduğunda, aklınızdaki detayları karıştırmak çok kolaydır. Notlarınızla ilgileniyorsanız ve bunun gibi sınavlarla bir sınıfa giriyorsanız, dikkatli olurum. Gerçek dünyada bu bir endişe kaynağı değildir.

edit : Başlangıçta sözdizimi dedim, ancak sözdizimsel olmayan detaylar profesörler için aynı derecede önemlidir ve bunlardan çok daha fazlası vardır.


Öğrenci olarak, diller arasındaki sözdizimi arasındaki farkları hatırlayamıyorsanız, bir sorununuz vardır. Sözdizimini kontrol etmek için her zaman bir derleyiciniz olmayacak, bu alanda sözdizimini hatırlamanız gereken bazı gerçek durumlar var.
Ramhound

Hatırlamanın imkansız olduğunu söylemiyorum, sadece yeni başlayanlar için çok daha zorlaştırıyor. Büyük sözdizimsel farklılıklar oldukça kolaydır, ancak profesörler bir liste için append()vs. gibi ayrıntılar hakkında rahatsız edici bir şekilde seçici olabilirler; push_back()bu, deneyimli programcıların belirli bir dilde belirli bir özelliği kullanmadıysa aramaları gereken bir şeydir. Sözdizimini yerinde hatırlamak şüphesiz yardımcı olur, ancak işlerin büyük çoğunluğu için asla gerekli değildir .
Karl Bielefeldt
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.