Öğrenmek için “yanlış” dili seçerken neden çok fazla korku var? [kapalı]


28

Belki de sadece benim, ama şu anki bir CS öğrencisi olarak bu sitede ve başka yerlerde pek çok soru ile karşılaştım. Sadece "x için hangi dili kullanmalıyım?" ama aynı zamanda "Hala Y dili kullanan var mı?" İlk CS dersim, eğer yanılmıyorsam, yaygın olarak kullanılmayan (en azından Java, PHP, Python, vb. Dillerle karşılaştırıldığında) Scheme'de öğretildi. Sınıf arkadaşlarımın çoğu, bir daha asla kullanmak zorunda kalmayacakları bir dil öğrenmek zorunda oldukları fikrini baltaladı, ancak bu popüler öğrenme dili korkusunun daha az popüler olduğu nereden anlamıyorum. Hayır, Scheme'i aldığım hiçbir işte kullanmayabilirim, ancak kullanmayı öğrendiğim için pişman değilim (çok yeni bir başlangıç ​​olsa da, o dönemde çok derinlemesine değil). Bu dönem bir arama motorları dersi alıyorum. Perl'de yapılan ve yine sınıf arkadaşlarının dil seçiminden şikayet ettiğini görüyorum. Favori bir dile sahip olmayı ve diğerlerinden hoşlanmamayı anlayabiliyorum, ancak bazıları neden ilk öğrenmeye çalıştı? Gerçekten "yanlış" dili öğrenebilir misin? Şema ya da Haskell gibi bir şey öğrenmek, başka hiçbir şey yapmadan iyi bir zihinsel egzersiz değil mi ve en azından farklı problem çözme yöntemlerine maruz kalmak için yararlı değil mi?


İlginçtir ki, ilk iki yıllık CS eğitimim yalnızca C # ve Java ile ilgiliydi ve ilk kooperatif yerleştirmemde ne kullandığımı tahmin ettin mi? Dört harfli kelime "P" ile başlar.
Anon.

6
@Shewbox, haklısın, yanlışlar, çapraz öğrenme avantajına sahip olacaksın, değil. Hikayenin sonu.
ocodo

7
İşe alım yöneticileri ile SEO (arama motoru optimizasyonu) yapıyorlar.
rwong

1
@wwong: Maalesef bazılarımız, "XXX'i bir kez kullandım ve bir daha asla dokunmayacağım" dememenin zor yolunu öğrenmek zorunda kaldık, çünkü bazı alıcılar anahtar kelime eşleşmelerinde spam.

1
@JB: İnsanların% 99'u diğerlerini öpüyor gibi görünmesini sağlıyor.
Michael K

Yanıtlar:


27

CS derecesinin amacı size C # ve Java'yı öğretmek değildir, bunları kendi başınıza öğrenebilirsiniz. Programlama ve hesaplama hakkında size öğretmek için. Dil sadece bir detaydır. Programlamada kariyer süresince birçok dili kullanacaksınız. Bugün Java veya C # olabilir, ancak bundan 10 veya 15 yıl sonra Erlang veya henüz icat edilmemiş bir şey olabilir. Farklı programlama stillerini ve bir soruna saldırmanın farklı yollarını öğrenmek, herhangi bir dili öğrenmekten çok daha önemlidir.


Aynen - derecem C ++ 'ı Java ya da C #' dan önce terk ediyor. Her ne kadar prensip olarak Pascal'da öğretilmiş olsak da, erken bir aşamadan itibaren çeşitli dillerde sorun yaşamaya başladık ve ikinci yılında "ayın dili" olarak adlandırılan bir kursu olan simulas simule (simülasyon yapmak için kullanılır) simülatör kodu yazabilme ihtimalim olmamasına rağmen - çoğunlukla bana öğrettiği OOP yüzünden (o zamanlar bilmiyordum)
Murph

17

Çünkü ilk diliniz, aksi öğrenene kadar, nasıl düşündüğünüzü şekillendirir.

Hesaplamalı olarak okuma yazma bilmeyen (ilk kez programcı) ve öğrendiğiniz ilk dil çok "temel" ise, nesne yönlendirme, çoklu gönderme, kalıtım, birinci sınıf işlevler, meta programlama, vb. Gibi daha yüksek dereceli kavramları bilemeyebilirsiniz.

Öğrendiğiniz ilk dil, genellikle ilk baskınıza hesaplamalı düşünceye bağlıdır. Eğer birisi size söylerse, Jimmy, sizden önce dünya A, B ve C sembollerinden oluşuyorsa, tüm düşünceleriniz A, B ve C açısından olacaktır. Bir güne kadar, bir fantezi inek sizi tanımadığı için sizi korkutur. , Y ve Z kavramları. Bunu sadece ABC bildiğini bilmene imkân yoktu.

Birinin ilk dili hakkında en çok endişe duyan insanlar muhtemelen karanlıkta savaşmış aydınlanmış programcılardır. Şimdi birinci sınıf bir fonksiyonun ne olduğunu biliyorum. Dostum, keşke iki yıl önce miras ve bağımlılık enjeksiyonunu bilseydim!

İlk diliniz, sonraki dillerle ilgili tavrınız kadar önemli değil. BASIC / C / Perl / PHP / etc'nin ötesinde bir dünya olduğunu bilmek için önünüzde görebilirsiniz. Bu yüzden birçok insan aktif diller için fanatiktir, çünkü aktif olarak geliştirilen birçok dil onlara doğru yaklaşmaktadır.


1
Yine de hepimizin bu temel kavramlardan başlaması gerekiyor. Biri yeni bir konsept öğrendiğinde (örnek olarak tasarım desenleri alır) , bir süre her yerde kullanır. Temel öğrenme programı yapısına ve bir programcı gibi düşünmeye başladığım ilk 5 yılı harcamamış olsaydım, OO’ya gittiğimde, usule ilişkin kısmı üzerinde yoğunlaşamayacak kadar yordam olurdu. O bölümü. Olduğu söyleniyor, 'İlk diliniz, sonraki dillere ilişkin tutumunuz kadar önemli değil' ve kavramlar için .
Michael K

Bunu eklemeyi düşündüm. Temel dillerin yeri olmadığını söyleyemedim. Aslında, (erken öğrenme aşamalarında) yaparlar. Sadece bahsetmedim.
Mark Canlas

Michael, düzenlemen çok daha şık, hahahaha.
Mark Canlas,

OP'nin sınıf arkadaşları endişeliyse, Şema öğrenmek için yanlış dildir, muhtemelen aydınlanmış olanların hepsi değildir. :)
David Moles

Bazı diller aslında basitken (C türevleri) karmaşık bir sözdizimine sahipken, diğerleri ise aslında karmaşık (Groovy) iken basit sözdizimlerine sahiptir. Demek istediğim - C / C ++ veya Objective-C'de - işler herhangi bir aktif kod kapsamı dahilinde oldukça açıklayıcı ve prosedüreldir, oysa Groovy gibi bir şey sözdizimi şekeri tarafından "gizlenen" "başlık altında gerçekleşen" birçok şey içerir. Yeni başlayanlar için önerim, genellikle bir bilgisayarın gerçekte nasıl çalıştığını daha fazla yansıtan zor sözdizimi dilleriyle gitmektir - çünkü bu bilgi diğer dillerin kullanımını kolaylaştırmaktadır.
dcgregorya

11

Üniversitedeyken, ekonomi ile ilgilenmeye karar veren birçok insan tanıdım, çünkü özellikle ilgilendikleri ya da tutkulu oldukları bir şey değildi, çünkü onlara iyi bir iş bulacağını düşündüler.

Doğu Asya Çalışmaları'na başladım çünkü Edebiyat'a ilk ilgimin yan etkisi olarak aldığım dersler beni etkiledi. Almanya'ya gittim, çünkü zamanımın çoğunu Japanology and Sinology programlarında geçirdiğim bir değişim programı yapmak istedim. En çok neye ilgi duyduğumu araştırdım. Bilgisayarla ilgili şeyleri okumak için üniversiteyi kullanmamaya karar verdim, çünkü çocukluğumda adil bir miktar hackledim, ancak interneti programlamak ve anlamak için zaman harcadım ve sonunda belki de olasılıkla , Tüm bu çıkarları birleştirmeyi başarmış iyi bir iş buldum.

Aradaki fark, Kariyerist ile öğrenme uğruna öğrenen biri arasındadır. Kariyerci, Yanlış Şey'i çalışacaklarından ve pişman olacaklarından endişe duyuyorlar çünkü Bana İş Arayan Doğru Şey olmayacak. Öğrenme uğruna öğrenen kişi, göreceli olarak yönetilebilir baskılarla her türlü alanı keşfetmek için zaman harcamak için 4 yıllarının olduğunu; kariyerci okulun işinin onlara bir şeyler öğretmek olduğunu düşünüyor. Öğrenen, bilmedikleri bir bölgeye girdiklerinde olayları çözer ve onlar için doğru işi bulma şansı daha yüksektir. Kariyerci, üçüncü kademe bir firmada ikinci bir oran muhasebecisi olmakta, faturaları öder ve patronlarına kızdırır.

Evet, bunlar arketiplerdir ve herkes pragmatizmi tutkusuyla dengelemek zorundadır, ancak temel fark budur. Kabul edilirse, programcı estetiğine sahip bir kişi de soruyu sorabilir, ancak daha çok "hangisi zamanımı en az israf eden olacak" bağlamında. Fakat benim tahminime göre, bu soruyu soran kariyerci dürtüsü, çünkü Kariyerci, Öğrenci'den daha fazla hata yapmaktan korkuyor ve Öğrenci genellikle Öğrenci hatalarından korkmadığı için daha iyi bir programcı yapıyor. Programlayıcı gibi, Öğrenci de beceri arayışındaki başarısızlığı benimsemektedir.


9

Evet, Scheme ve Haskell gibi fonksiyonel dilleri öğrenmek, işlevsel programlamaya giriş olarak iyidir. Sınıf arkadaşlarınız Perl'den şikayet ettikleri sürece, Perl bir zamanlar olduğu kadar popüler olmasa da, kesinlikle hala iş dünyasında yaygın olarak kullanılan bir dildir.

Gerçek dünyada kullanılan pratik dilleri öğrenmek isteyen sınıf arkadaşlarınızı anlayabiliyorum, ancak bir kez deneyimli bir programcı olduğunuzu ve çeşitli programlama paradigmalarına maruz kaldığınızı, yeni dilleri öğrenmenin çoğunlukla sadece bir toplama meselesi olduğunu düşünürler. yeni sözdizimi. Bu nedenle, kavramlara maruz kaldığınız sürece, nihai işvereninizin çok zorlanmadan istediği dilde "uzmanlaşabilirsiniz".


5

Belki de insanlar, Edsger Dijkstra'nın klasik trolling parçası gibi ifadelerden etkilendiklerinden, "BASIC'e önceden maruz kalmış olan öğrencilere iyi programlama öğretmek pratikte imkansızdır: potansiyel programcılar olarak, rejenerasyon umudunun ötesinde zihinsel olarak sakatlanırlar." ( bağlantı )

Eğer "yanlış" dili öğrenirseniz, kalıcı beyin hasarına maruz kalmaktan korkuyor. Perl örneğiniz şaşırtıcı değildir, çünkü Perl, bu tür eleştirmenleri sıkıcılarından bu tür eleştiriler çağıran dillerden biridir.


5

İlk diliniz sözdizimi veya deyimler yerine kavramlara odaklanmalıdır. Bunu bir rehber olarak kullanmak:

  • Perl , çok sayıda özel değişken ve arkanal sözdizimi araması anlamına gelir.
  • PHP organik büyümesi nedeniyle kavramların karıştırılması anlamına geliyor
  • Java biraz karışıklık anlamına gelir, çünkü her şey aslında bir nesne değildir
  • Assembly / C / C ++ , gömülü sistemler geliştirme yapmak istemeniz ancak daha yüksek seviye konseptlerden uzaklaşmak istemeniz için harika olan düşük seviyeli bir ton anlamına gelir.
  • SQL , doğal dilin kod ve veri yapılarına nasıl eşlenebildiğini (ve yapılamadığını) görmek için kullanışlıdır.
  • Visual Basic for Applications , özel amaçlı, atılan ürünlere odaklanır ve bu nedenle doğru hata işleme ve yeniden düzenleme gibi önemli kavramları atlamayı çok kolaylaştırır.
  • LISP basit bir sözdizimi gibi gözükse de, tam adlarını bilmeden açık bir şekilde anlamsız olan çok fazla kestirme ifadeye sahiptir.
  • Haskell çoğu zaman matematiğe çok benziyor, ancak hızlı bir şekilde sözdizimi çorbasına dönüşebilir
  • Python ... Aslında, Python yeni başlayanlar için ciddi bir itiraz bulamadığım tek dil. Belki de basitçe öğrendiğim son dildir ve bir sonraki dil bana yolumun hatasını öğretecektir.

C # ya da VB.Net hakkında hiçbir şey yazmadığını fark ettim.
HK1

4

Sınıf arkadaşlarınıza, bir dili kullanmamışlarsa, bir dilin nasıl "yanlış" olduğunu bildiklerini sorun. Neyi beğendiğinizi ancak çok çeşitli dilleri kullanarak anlayabilirsiniz.

Sınıf arkadaşlarımın çoğu, bir daha asla kullanmak zorunda kalmayacakları bir dil öğrenmek zorunda oldukları fikrini baltaladı, ancak bu popüler öğrenme dilinin daha az popüler olmasının nereden geldiğini tam olarak anlamıyorum.

Onları bilmeden neden böyle hissedeceklerini kesin olarak söyleyemem. Belki onlar tembeldir. Belki dili daha önce kullanmışlar ve beğenmiyorlardı. Belki başka bir dil denemekten korkuyorlar. Kim bilir. Bildiğim şey şu ki, bir CS öğrencisi, araştırmacı ve endüstride çalışmış olmak, çeşitli dilleri tanımak, çok büyük bir varlıktır ve ne kullanacağınızı veya kullanmayacağınızı asla bilemezsiniz. Örnek: Ben ilk C öğrenme oldu hocam gibi script ve komut satırı yardımcı programları kabuk bizi tanıştırdı grepve awk. Arkadaşlarım bunları bir yeterlilik düzeyinde öğrenmekle uğraşmadı. Şimdi onları her gün işte kullanıyorum.

Perl'de yapılan bu dönem bir arama motorları dersi alıyorum ve yine dil seçiminden şikayetçi sınıf arkadaşları görüyorum.

Perl çok güçlüdür ve nasıl kullanılacağını biliyorsanız, hayatınızı çok daha kolaylaştırabilir. Ayrıca Python'a benzer ve Python, CS öğrencilerinin en büyük işe alım uzmanlarından birinde yoğun olarak kullanılır: Google. Sınıf arkadaşların bunu yiyor olmalı. FWIW, perl ve python'u orta seviyeye biliyorum (acemi değil, uzman değil).

Favori bir dile sahip olmayı ve diğerlerinden hoşlanmamayı anlayabiliyorum, ancak bazıları neden ilk öğrenmeye çalıştı?

Genç ve boşuna? Ben de öyle yaptım. Ama benim "sıkıntım" matematik dünyasında daha fazlaydı. Bu deneyimden dolayı, bu konuda çalıştıklarından, yeni şeyler öğrenmekten hoşlanmadıklarından ya da yeni dillerin kendileri için öğrenmenin zor olduğundan bahsediyorum. (Ama sonra, bilmeye değer bir şey sadece kucağınıza düşmeyecek derim)

Gerçekten "yanlış" dili öğrenebilir misin? Şema ya da Haskell gibi bir şey öğrenmek, başka hiçbir şey yapmadan iyi bir zihinsel egzersiz değil mi ve en azından farklı problem çözme yöntemlerine maruz kalmakta yararlı olmaz mı?

İlk cümleyi: Hayır, fakat kesinlikle + öksürük + Lisp + öksürük + = tercih etmemeyi tercih ettiğiniz dilleri öğrenebilirsiniz

Diğerlerine: Evet! Neyi sevdiğinizi öğrenmek ve ufkunuzu genişletmek için mümkün olduğunca çok dil öğrenmelisiniz. Hepsine hakim olma zorunluluğu yoktur, ancak çalışma bilgisine sahip olmak her zaman yardımcı olur. Sen asla sandığın bir dil öğrenmek için zaman kaybı olacak kullanışlı olacağını bilirler.


1
Lisp'in nesi var? :)
Michael K

1
'Mümkün olduğunca çok dil öğren' için +1. Çeşitli dilleri biliyorsanız, verilen bir görev için bir tane seçmek önemsiz hale gelir.
Michael K,

1
@Michael: Üstelik, kavramların çoğunu bileceğiniz için yeni bir tane öğrenmeyi kolaylaştırıyor.
David Thornley

@ Michael: Lisp =) ile yanlış bir şey yok. Ben sadece işlevsel bir programlama dili çocuğu değilim. Artı, çok fazla parantez !! Ancak, Lisp'te uygulanan bazı çok zarif çözümler gördüm. Şema ve Lisp gurularına çok saygı duyuyorum.
aqua

3

Programcıları işe almanın keyfi, kaprisli bir süreç olduğu için, basit gerçek şu ki, yanlış teknolojiyi seçerseniz, kendinizi dodo yolunda ilerleyebileceksiniz.

Ön sayfada, herhangi bir zamanda, aşağıdaki gibi inançlarla ilgili dini inançların yakınında göreceksiniz:

  1. İyi bir programcı olmak için bilgisayar bilimi alanında bir kolej diploması gerekir.
  2. Bilgisayar bilimleri alanında yüksek lisans derecesi insanları kötü programcılar yapar.
  3. Kariyerinizi ilerletmek için sertifikalar kesinlikle gereklidir.
  4. Sertifikalar kötü bir programcıyı gösteren kırmızı bayraktır.
  5. Bilgisayar bilimi dışındaki bir alanda üniversite diploması en iyi programcılarla sonuçlanma eğilimindedir.
  6. Akşamları ve hafta sonları da programlanmadığınız sürece iyi bir programcı değilsiniz.
  7. ve devam ediyor.

Her şeyden önce sabit olan, şirketlerin% 99'unun Y teknolojisi konusunda X yıllık bir deneyime sahip olmanızı istemesi ... Ve bir kişi yalnızca bu kadar çok döngü olduğundan, bu döngüleri önemli ölçüde harcadıkları için.


2

Öğrenmek için “yanlış” dil seçiminde korku başlıca nedeni olduğunu düşünüyorum bilgi eksikliği ve rehberlik eksikliği gibi:

  • Gümüş merminin yanlışlığı . İş, çevre veya proje için Doğru Dil olduğu yanılgısı. Ve yanlış olanı seçerseniz, kızartılırsınız.
  • Programlamanın dilleri aştığını anlamamak . Dil, sadece daktilo veya yazar gibi bilgisayar gibi bir araçtır. Bu, aracın nüanslarını (sözdizimi) öğrenmekle ilgili değildir, ancak aracın size ne sağladığını (kavramlar, soyutlamalar vb.)

Bu nedenle örneğin Şema çok iyi bir eğitim dilidir. Programlama iki şeyle ilgilidir: soyutlama ve yeniden kullanma. Şema tam olarak iki özelliğe sahiptir: işlev soyutlama ve işlev çağrısı (yani yeniden kullanım). Heck, sözdizimi bile yok!
Jörg W Mittag

2

Daha fazla görüşe maruz kalıyoruz.

Geçmişte işlerin nasıl yapıldığına kıyasla, zamanımızı nasıl harcadığımızla ilgili daha fazla ikinci bir tahmin var çünkü daha fazla görüşe maruz kalıyoruz - herkesin ilk programlama dilinin ne olması gerektiği ve ne zamandan beri olması gerektiğine dair düşünceleri var. Böyle titiz bir konu, herkes bir şeyi haklı çıkarabilir .

Hızlı hareket eden yaşam tarzımız nedeniyle, herkes zamanını boşa harcamayı doğuştan korkuyor. Yanlış dili öğrenme korkusu, insanların kolayca birçok düşünceye maruz kalmasının bir sonucudur.


1

Genel, şüpheli faydası olan bir şey öğrenmekten hoşlanmıyor. Buradaki iğnenin daha da kötü olduğunu görebiliyorum, çünkü bu, insanların almak istedikleri sınıf ve hala yararsız olduğunu düşündükleri bir şeyler öğreniyorlar. Kolaj yapacak olsaydım, gerçek dünyada kullanabileceğim bir şey öğrenmek isterdim.

Diğer insanlarla aynı fikirde olamayacağım tek kısım, bir dilin yoğun bir şekilde kullanımda olduğu ve sadece öğrenmek için kabarcıklarının dışına çıkmak istemedikleri durum. Ancak o zaman şikayet gelmiyor.


1

Neden 'korku'? İstemediğiniz veya önemli olduğunu hissetmediğiniz bir şeye zorla beslenmenin düşmanlığı diyebilirim. Hiçbir dil yanlış değildir ancak bazı şeylere odaklanmak için sınırlı zamanımız vardır. CS derslerimi Java ile yapmak zorunda kaldım ve bundan memnun değildi. Java'nın yanlış dil olduğundan korktuğum için değil, ama kariyerimin odak noktası değildi.

Şimdi Java doğru değil mi? LOL Herkes Java öğrenir. Rekabet etmek istemediğiniz şey budur. Özgeçmişiniz, Java'yı Tanıyan Yeni CS Mezunu başlığı ile birlikte 1000'lerin yığınında olacaktır. Aslında muhtemelen istihdam edilebilirlik konusunda bilinçli bir şekilde öğrenmeniz daha iyi olacaktır. Şema, seçkin bir üniversiteye gittiğinizin ve belirsiz bir topluluk kolejine gitmediğinizi belirten gizli işarettir.

Bu tür bir düşmanlığın genel olarak CS’den çok daha geniş olduğunu, ancak genel olarak yüksek öğretimin göstergesi olduğunu da söyleyebilirim. Eğitimcinin Perl'i seçtiğinden eminim çünkü Perl'i tanıyor ve kolayca not verebiliyor ve öğrencilerin öğrenmeyi tercih ettiği yeni dilleri öğrenmekten korkuyor. Bence sizin kendi eğitiminiz ve kendi başarınız için gerekli olduğunu düşündüğünüz teknolojileri belirleyebilmelisiniz.

(PS MIT, Schema'dan vazgeçti ve Python'a geçti)


Programdan vazgeçme konusunda üzücü olan SICP, her programcının okuması gereken bir şey. Her fırsatta bunu teşvik ediyorum.
Zachary K,

Bu bana Üniversite günlerimi hatırlatıyor. Başladıktan birkaç yıl sonra, CS departmanı ana öğretim dili olarak C ++ 'dan Java' ya geçti. Birkaç yıl sonra (veri yapısı öğreticilerini öğretmeye çalışırken) hiçbir öğrencinin bellek ayırma hakkında hiçbir şey anlamadığı açıktı (örneğin, yığında veya yığında tamamen kaybolduğu). Dolayısıyla, onlara öğretmeye çalıştığımız veri yapıları üzerindeki temel işlemleri anlamadılar. Çok geçmeden C ++ tekrar tercih edilen dil oldu.
smithco

Uygulamada - yeni dilleri öğrenmek, programlamayı anladığınızda kolaydır. İnsanlar C gibi diller önerir, çünkü işaretçilerinizi bildirmenizi ve bellek ayırmanızı ve işaretçilerinize yazma erişimini korumanızı gerektirir ... bu terimlerle düşündüğünüzde her şey oldukça kolaydır çünkü zaten tüm bunları düşünürsünüz. Tersine çevirmek daha zordur - daha soyut bir dille başlamak ve sonra olan tüm temel şeyleri anlamak için deneyim oluşturmak.
dcgregorya

1

Zaman, en nadir görülen maldır, bir kez gerçek dünyaya girdiğinizde - ve hiç kimse, onlara gerçek bir fayda sağlamayan becerilerle zaman harcamak istemez.

Olduğu söyleniyor, öğrenilecek bir 'yanlış' dil olduğunu düşünmüyorum - keşke PHP'de gelişmiş şeyler yapmakla uğraşmak yerine Ruby'yi yıllar önce keşfedebilseydim ...

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.