Birden çok programlama dilini bilme ihtiyacını nasıl ele alabilirim? [kapalı]


25

Ben nispeten genç bir programcıyım. 23 yaşındayım ve yaklaşık 5 yıldır profesyonel olarak programlama yapıyorum.

Programcıların çoğu C ile başladığım için, eğlence için bazı x86 montajları öğrendim ve sonra programlama dünyasında en büyük tutkum olan C ++ 'ı buldum. C ve C ++ ile programlama sizi platforma özel API'leri öğrenmeye zorlar, her biri sabit çalışma ve deneme gerektiren kütüphaneler ve çerçeveler içerir. Bir süre sonra bölgeme olan talep temelde bu diller için olduğundan, Java ve C # 'ya geçmek zorunda kaldım. Bu dillerle web geliştirme dünyasına girdim ve sonra javascript'i öğrenmek zorunda kaldım. .NET Framework için geliştirme başlangıçta heyecan vericiydi ama Microsoft'a bağlı olduğumu sürekli hissettim (ve tabii ki .NET Framework beni Linux'tan uzaklaştırıyordu). Masaüstü geliştirme için .NET ile yaptığım her şeyi Qt ile C ++ kullanarak yapabilirim ama web geliştirme için alternatif aramalıydım. Çabucak Django'yu buldum ve daha sonra Django'yu kullanabilmem için Python'u öğrenmeye başladım. Bugünlerde Objective-C ile iOS geliştirmeyi öğreniyorum.

Şimdiye kadar bu dilleri öğrenmek oldukça kolaydı (C ++ beni iyi eğitti) ama bir gün hepsini takip edemediğim için endişeleniyorum. Sadece netleştirmek için. Öğrendiğim diller, C # ve Java olması gerektiği içindi. Diğerlerini eğlence için öğrendim, çünkü programlamayı ve yeni şeyler öğrenmeyi seviyorum. Ayrıca yeteneklerimi masaüstü, web ve mobil gelişim konusunda keskin tutmayı seviyorum.

Sorum şu: Birden fazla programlama dilini nasıl takip ediyorsunuz? (Bu dillerdeki değişiklikleri takip et ve becerilerini keskin tut) yani: Yeterli programlama dili gibi bir şey var mı?


20
Daha fazla dil öğrenmemeyi düşünmeye nasıl cüret edersin ?
Mateen Ulhaq

9
“Her yeni bir şey öğrendiğimde, bazı eski şeyleri beynimden dışarı iter. O zamanki gibi evde şarapçılık kursu aldım ve araba kullanmayı unuttum.”
Dean Harding

1
Programlama, X dilinin sözdizimine hakim olmakla ilgili değildir; Doğru iş için doğru dili nasıl seçeceğinizi öğrenin, sonra dili seçtiğinizde API ve sözdizimini öğrenin ve daha sonra başka bir dilde ne yaptığınızı yapın ... PROGRAM!
Chris

6
asla unutamayacağınız bazı diller; unutmayı dört gözle beklediğiniz diğerleri
Steven A. Lowe

3
Çoğunlukla OOP'a gidiyorsun. İşlevsel dil Haskell gibi diğer paradigma dillerini araştırmalı ve ardından izlemeyi düşünmelisiniz.
Vigneshwaran

Yanıtlar:


27

Şahsen, dilleri "takip etmek" zaman kaybı olduğunu düşünüyorum. Yeni popüler dilleri seçmek her zaman iyidir, ancak bir kez C ++, Python vb. Gibi popüler ve iyi bilinen bir diliniz varsa, kaygınızın altında endişelenmeyin. İyi bir programcıysanız, dil yalnızca bir anahtar kelime kümesidir.

Orada sadece çok fazla önemli paradigma var; Belki de yaşlı köpekler yeni numaralar öğrenemezler, fakat pek yeni numaralar yoktur. İşlevsel / nesne yönelimli / olaya dayalı / hangi dilde olursa olsun, başka bir paradigma öğrenmek; fakat tam dil seçimi konusunda fazla endişelenmeyin.

Peki ya bir süredir bir dilden uzaklaştıktan sonra bir veya iki anahtar kelimeyi unutursanız? Bu yüzden Google’ız.


2
Sadece patronunun görmesine izin verme. :) Veya programcı olmayan biri. Programlamanın çok kolay olduğunu ve bu kadar kolay bir iş için neden bir programcının ödeneceğini düşüneceklerdir.
Mateen Ulhaq

4
Belirli bir paradigma içinde kalırsanız bu doğru olduğunu düşünüyorum. Örneğin, OO / Emperative. Zorunlu olmayan bir dile bakarsanız bozulur.
Richard

@ Richard: OO'nun zorunlu olarak zorunlu olduğunu ima etmek istemediğini biliyorum , değil mi?
Frank Shearar

@ Frank: Evet, her ikisi de çok yaygın kullanılan dil grubundan ziyade (Java, C #, C ++) ...
Richard

1
"(a) dil yalnızca bir anahtar kelime kümesidir" - katılmıyorum. Her platformda yerel, deyimsel şeyler yapmanın yolları vardır. X platformunda iyi bir programcı olmak , sadece sözdiziminden çok daha fazlasını içerir. Örneğin, .NET OO zihniyetimin tek ihtiyacım olduğunu kabul edersem harika JavaScript kodu olmaz.
Bevan

54

Bir gün hepsini takip edemediğim için endişeleniyorum.

30 yıl sonra bunu söylememe izin verin.

Evet, izini kaybedersin.

Yani?

Bu yüzden referans kılavuzları yazıyorlar.


14

Birden çok dil öğrenmenin asıl faydası, farklı paradigmalar , modeller ve size verdikleri düşünce biçimleridir .

Java bilginiz ve onun tek mirası, C ++ ve onun çoklu mirası hakkındaki görüşünüzü şekillendirmiş olmalıdır. Java ve GC hakkındaki bilgileriniz, C ++ ve kullanıcı tarafından yönetilen hafıza hakkındaki görüşünüzü şekillendirmiş olmalıdır. C ++ ve şablonları hakkındaki bilgileriniz, Java ve genel bilgiler hakkındaki görüşünüzü şekillendirmiş olmalıdır. Bu ilişkilerin tümü elbette her iki yönde de çalışır.

İşlevsel bir dilde hiç yazmadıysanız, C ++ 'ın <algorithm>kütüphanesinin ne yapmaya çalıştığını ve birinci sınıf vatandaşlık işlevlerine sahip olmadan ne eksik olduğunu (en azından C ++ 11'den önce) beğenmeyeceksiniz. Dinamik olarak yazılmış bir dilde hiç yazmadıysanız, statik yazmanın sizin için yapabileceklerinin ve yapamayacağının sınırlarını anlamazsınız. Değişken devleti olmayan bir dilde hiç yazmadıysanız, değişebilir devletin size getirdiği cezaları anlamazsınız.

Başka dilleri öğrenmek iyidir, çünkü mevcut dillerinizi daha iyi anlamanızı sağlar. Bu bakımdan, güncel kalmak konusunda endişelenmenize gerek yok çünkü bir dilin kavramları hızlı bir şekilde - veya hiç değişme eğiliminde değil.


8
+1 Bu sadece çoklu dil öğrenmekle ilgili değil (dil öğrenmek kolay kısmıdır). Farklı paradigmalar öğrenmek önemlidir. Üniversite düzeyinde öğrencilerin kişisel olarak bu farklı paradigmalara maruz kalması gerektiğini düşünüyorum, bugünlerde çok fazla "McJava (tm)" Üniversitesi olduğu zaman üzücü bir durumdur. Lütfen tüm içeriği okuyunuz. :(
Darknight

8

Sorum şu: Birden fazla programlama dilini nasıl takip ediyorsunuz? (Bu dillerdeki değişiklikleri takip et ve becerilerini keskinleştir).

Kod yaz Dil güncellemelerine ayak uydurmak istiyorsanız, kod yazmaya devam edin.

Yeterli programlama dili gibi bir şey var mı?

Birden fazla dil öğrenmek, başka türlü alamayacağınız diğer dillere bakış açısı kazanmanıza yardımcı olur. Birçok dili öğrenmek, genel olarak hesaplama konusunda size geniş kapsamlı bir genel bakış açısı sunar.

Ancak her dili öğrenmek imkansızdır ve tüm dillerin sizin ya da işiniz için bir değeri yoktur. Ezoterik diller, içsel entelektüel değerleri dışında, öğrenmeye değer değildir, çünkü gerçek pratik kullanımları yoktur.

Yani hayır, "yeterli" diye bir şey yoktur. Fakat kesinlikle “belaya değmez” diye bir şey var.


4

Kullanacağınızı veya şu anda kullanacağınızı düşündüğünüz dillere ayak uydurmak konusunda endişelenmeniz yeterli. Yeni dilleri öğrenmek faydalıdır, ancak bir daha kullanmazsanız bir dilde daha küçük değişiklikler hakkında bilgi edinmek için bir neden yoktur.


4

Öğrenmeyi asla bırakma; ama farkına varma, her şey hakkında her şeyi asla bilmediğini. Her zaman daha akıcı olduğunuz bazı ortamlara sahip olacaksınız. Endişelenme, sadece eğlenmeye devam et.


Doğru, öğrenmeyi asla bırakma ama FOCUS. Her şeyi öğrenmek, bir fu ** başsız tavuk gibi koşmak gibidir ve sonunda, hiçbir şeyde iyi değilsindir.
Slawek

@Slawek: "Sonunda kesinlikle hiçbir şeyde iyi değilsin". Neredeyse. Daha iyi bir sürüm olabilir: Sonunda, iyi olduğunuz şeylerin hiçbir ipucunuz olmadığı yeni teknolojinin yerini almıştır.
S.Lott

3

Tamamladığınızı hissettiğinizde yeterli programlama diliniz var. Birden fazla dil bilmek harika, ancak işte 2'yi kullandığınızda 12'yi bilmek bağlamsal faydadan daha fazlasını sağlar mı, bilmiyorum. Daha fazla dil bilmenin yanlış bir tarafı yoktur, ancak çoğu zaman, en çok kullanmanız gereken diller ve disiplinler içindeki bilginizi geliştirmek için muhtemelen daha iyi durumdasınız. Konuşulan diller gibi, yaşamınıza değer katan dillerde daha yetkin olmak istersiniz.

Birden çok dil bildikleri ancak her birinde aynı şekilde kod yazdıkları için övünen birkaç programcıyı hatırlayabilirim, bu mutlaka iyi bir şey değil.

Ayrıca, yaşlandıkça, zaman sizin için karar vermenize yardımcı olacaktır (yanımda çalışmak için evlenmeden çok daha az zamanım var, çocuklarım oldu, çocuk sahibi oldum, serbest yazar oldum, kariyer meseleleriyle uğraşmaya başladım ve Hafızam güneye doğru başladı.


3

Son 25+ yıl boyunca birçok dil öğrendim. Bir süre sonra, bazıları daha az kullanışlı hale gelir ve unutulur (Perl). 6502 meclisi, Apple BASIC, Lisp, Prolog, Pascal, SPAN, FORTRAN hakkında konuşmasak bile ...

Diğer diller soldu, sonra 10 yıl sonra yeniden öğrenmem gerekti (Python). Python'a ayak uydurmanın bir anlamı yoktu, hızlanması uzun sürmüyor - Google / SO arkadaşınız.

Sonunda, bir dil sadece bir araçtır. Eldeki iş için kullanıyorsun. Beceri ne zaman ne kullanılacağını bilmektir. Dürüst olmak gerekirse, C ++ 'ı kullanmaya başladığımda, tekrar C kodlaması yapmak istemedim. C # öğrendiğimde bir daha C ++ yapmak istemedim.


3
Perl'in ölümünün raporları büyük ölçüde abartılı.
Philip Potter

Perl'e karşı kişisel bir şey değil. Unix üzerinde çalışırdım, o yüzden Perl seçim silahımdı. Bunu kullanarak oldukça büyük teknoloji uygulamaları yaptım. Sonra Windows'a taşındım. Şimdi tekrar döndüm ama geliştirdiğim uygulama Python'da. Perl ve Python'u kullanarak çok az şey var.
dave

1

Benim düşünceme göre programlama tamamen kullandığınız dil ile ilgili değildir. Programlama bir düşünce tarzıdır. İyi bir yazılım yazmak için iyi bir analist olmanız gerekir, programlama dili yalnızca yazılımınızı oluşturmanıza yardımcı olur. Elbette, her dilin kendi eksiklikleri veya avantajları vardır, ancak iyi bir yazılım oluşturmak için geliştirici olarak düşünmeniz gerekir. Bir geliştirici gibi düşünmeyen insanlar, dili ne kadar iyi kullanıyorlarsa kullanınlar, harika bir yazılım oluşturmazlar.

Her zaman bir ev inşa eden biriyle karşılaştırırım, evi inşa edebileceği sürece çekiçini umursamaz. Çekiçle tanışması gerekebilir (örneğin ağırlık), ancak aracı bir kez öğrendiğinde harika bir ev inşa edebilir. Alete alışmak o kadar zor değil çünkü aletin çoğu "versiyonu" oldukça benzer (çekiçler için değil aynı zamanda geliştirme dilleri için de geçerli).

Çalışırken Java kullanıyorduk (bundan önce ASP ve VB5 kullandım), ama mezun olduktan sonra (yaklaşık 5 ~ 6 yıl önce) C # (ve Javascript) 'i kullanmayı öğrendim, bir iş anahtarı beni VB.NET’e gitmeye zorladı " Bir sonraki iş hem .NET dillerini (benim yaptığım) kullanmamı hem de Java'yı tekrar kullanmama izin vermeme "izin verdi" (kullandıkları bazı eski araçlar için). Bugünlerde X ++ ile çalışıyorum (Microsoft Dynamics AX dili), ancak hala .NET'te biraz geliştirme yapıyorum. Bunlar sadece günlük işlerimde çalıştığım dil, F #, Ruby, vb. Gibi yeni dilleri araştırmayı da seviyorum. Bu yeni dilleri öğrenmek sadece birkaç gün sürdü (sadece sözdizimini anlamak için) ve geri kalanı Sadece dil ile oynuyorsun ve yavaş yavaş öğreneceksin.

Çok fazla dil var, ancak yalnızca gerçekten farklı olan dillere odaklanma eğilimindeyim (F # gibi). Yeni dilleri öğrenmeyi ilginç ve eğlenceli olarak görüyorum, bu yüzden şimdilik iyiyim, yeni bir dil öğrenmek oldukça kolay (en azından düşünce aynıysa, C #, VB, Java aynı ama örneğin F # oldukça farklı) ve çok fazla endişelenmiyorum.


1

kariyerime 5 yıl önce vb6'da başladım, php'ye, sonra java'ya ve ardından .net'e geçtim. Şu anda asp.net mvc2 üzerinde çalışan son senedir ve mvc3 üzerinde elimi deniyor

İşin sırrı asla eskimez hale gelmemeli , dünyadaki herşeye hakim olamayacaksın, bu yüzden endişelenmek seçenek değil.


1

Bence bu bir kariyer sorusu. Bu nedenle, yalnızca belirli bir araç grubunu biliyorsanız sizi işe alan kişileri hesaba katmanız gerekir. Belki bu işi diskalifiye eder, ama belki değil. Bu yüzden yüzeysel yeni şeyler öğrenin. Ancak zor şeyleri öğrenmeye devam edin (matematik, yeni programlama paradigmaları).

Yeni araçlar kullanmaya adapte olmak bir tradeoff. Bilişim sektörü hiperlerle doludur ve bunlardan korunmanız gerekir. Bu şu ifadeyle başlar: hayır eski editörümü (emacs?) Kullanmaya devam ediyorum. Fakat zaman zaman yeni şeyler öğrenmek zorundasın. Gerçekten yıllar geçtikçe daha iyi oluyorlar (3-4). Elinizde gerçek bir proje ile iş yerinde yeni şeyler öğrenme şansınız varsa: tereddüt etmeyin, çünkü eğlenceli olacak! Hype'ı gerçek yenilikten ayırt etmenin en iyi yolu, onu kullanan insanlara bakmaktır. İnsanları yargılamada teknolojiden daha iyisin :)


1

İşlevsel, OO ve mantıksal gibi farklı paradigmalara sahip dilleri öğrenmeyi öneriyorum, çünkü onlar çok farklı.

Bununla birlikte, 3 işlevsel dil veya 3 OO Dili öğrenmeyi kesinlikle tavsiye etmem.

Eğer okuma konusunda iyisin, belki. Ama tekrar tekrar benzer şeyleri öğrenmeyi zor buluyorum, ki bu neredeyse aynıydı, fakat tam olarak değil, özellikle pencere boyama, veritabanı çağırma, koleksiyon kütüphaneleri, farklı isimleri ve kuralları hatırlamanız gereken kütüphane gibi şeyler ama Neredeyse aynı şekilde davranın. PaintRect (xstart, ystart, xend, yend) veya (xstart, ystart, width, height) miydi? Buraya “son” dahil, oraya dahil değil mi?

Ancak bazı insanlar bunları öğrenmek için zor zamanlar geçirmezler.

Bu yüzden, bazı dilleri öğrenmeyi öneriyorum, ancak bir kaçını derinlemesine öğrenmek, sadece yüzeydeki dilden sonra, dilden daha fazla şey öğretebilir. Belki yılda 2 dil değil, iki yılda bir dil.


0

Spektrumun diğer tarafındayım. Çoklu dil öğrenmekten nefret ediyorum, çünkü basit şeyler öğreniyorsunuz ve daha derin problemlerde asla bu şekilde iyileşemiyorsunuz. Aynı zamanda kötü uygulamaları diğer dillerden de öğreniyorsunuz.

C ++ 'da kodlayan hardcore bir Java geliştiricisi gördüm, patlamak için bir karmaşa ...

Sorun, tüm dillerin, soyutlamanın sızmaya veya size karşı oynamaya başladığı yerlere sahip olmalarıdır. 1 günde sözdizimini öğrenebilirsiniz, ancak verimli bir şekilde kodlamanın ve hatasız bir şekilde kodlamanın bilinmesi 5 yıl alır. () Veya [] kullanıyor musunuz? Malloc neden uzun süredir devam eden işleminizin belleğinin bitmesine neden oluyor?

Ve öğrenme paradigmaları da ilginç bir öneridir. Çünkü C ile Java kurallarını veya C # ile Perl kurallarını kullanmak muhtemelen karışık kodların nasıl yazılacağının harika bir gösterisine dönüşür.

Birkaç yeni dil öğrenmek, ufkunuzu genişletmenize yardımcı olabilir, ancak sizi daha akıllı hissettirmemeli, öğrendiğiniz her yeniliğe karşı daha aptal hissetmenizi sağlamalıdır.


0

Bir başkası bir yere "herkesin 3 dil bilmesi gerektiğini" önerdi.

Katılmaya eğilimliyim. Derlenmiş bir dil (C / C ++, C #, etc), yorumlanmış bir dil (Python, Ruby, vb.) Ve bir metin işleme dili (Perl, Awk, vb.) Bilmelisiniz. Ayrıca bir kabuk kodlama dili bilmeniz gerektiğini düşünüyorum (Bash, bugünlerde veya Windows güç kabuğu). Aynı tavsiye araç kitleri ve API'ler için de geçerlidir.

Gelişen bir dile ayak uydurmanın tek yolu onu kullanmaktır. Araç setinizi normal dillerden birkaç taneyle sınırlı tutarsanız, hepsini çözmek için bunları daha kolay kullanırsınız ve böylece her bir gelişmeye ayak uydurabilirsiniz.

Bu nedenle, günlük kullandığınız teknolojilerle hızlanın ve orada kalın. Vaktiniz olduğunda diğer ilgi alanlarıyla uğraşırken yanlış bir şey yok. Yeterli bir programcının genellikle yeterli motivasyon verilen yeni bir teknolojiyi öğrenmesi ve onunla oturmak için zamanı engellemesi uzun sürmez.

Dışarıdaki her bir teknolojiye ayak uydurmanıza gerek yok ... en çok kullandıklarınızı odak noktanızda tutarak, onları gerektiği gibi yukarı ve aşağı çevirebileceksiniz.


-5

Çocuklar, gerçekten - bu üzücü. Uzmanlık yok, "her şeyi öğreneceğim". Bu yaklaşım için üzgünüm, her şeyi biliyor olacaksınız, ancak yetenekleriniz o kadar düşük olacak ki hiç kimse size iyi para ödemez.

Herhangi bir şeyle “iyi” olmak için 10 yıllık bir eğitime ihtiyacınız olduğunu söyleyen bir araştırma vardı (programlama, gitar çalmak, dans etmek, vb.). Ve bu doğru, 5-10 yıllık C ++ / python / etc yazmanız gerekiyor. Ticari, kaliteli kod geliştirmek için gerekli becerileri edinmek.

Ve dil referanslarıyla ilgili bu saçmalık? Ve her programlama dili için farklı olan iyi programlama alışkanlıkları. Hangi referansta, C veya Sunucu Tarafı Güvenlik uygulamaları için iyi bellek yönetimi uygulamaları ve veri yapıları bulabilirsiniz?

Masaüstü, mobil, sunucu (!!!) - bunlar tamamen farklı ortamlar. Tüm hayatı "oynamak" isteyip istemediğinize karar verirsiniz ya da bir şeye odaklanır ve düzgün bir iş bulursunuz. Muhtemelen insanlar size dünyadaki her dili bilmeniz gereken saçmalıkları söyleyecektir, çünkü boktan işlerini geliştirmek için aynı şeyi yapmaya çalışıyorlar. Fakat tahmin et ne oldu, Java "referans" ını okuduktan sonra bile, bunu asla başaramayacaklar, çünkü o zaman neler yapabilecekler? Tam olarak hiçbir şey.

Evet - grafik tasarım, senaryo yazımı ve flaş da öğrenin, ihtiyacınız olacak! :) Neyin yanlış olduğunu tam olarak bilmiyorum ama bir kerede istemci, sunucu ve mobil yapıyorsanız, işinizden çıkın ve yarına kadar beklemeyin, çünkü şimdi yapmanız gerek!

Sorum şu: Birden fazla programlama dilini nasıl takip ediyorsunuz?

Sorunuz, onları nasıl takip edemeyeceğiniz olmalıdır. Tavsiyem, pokemonu bırak ve sevdiğin bir şeyde iyi ol.


1
Haklı olduğumu biliyorsun - kim daha fazla kazanıyor? IBM'de Kıdemli Java Mühendisi veya bazı yerel web sitesi geliştirme şirketlerinde "programcı-o-graphican-o-computerfixer-o"? Sadece grafik yapan ve "aptal" bir afiş projesi için 10.000 dolar alan iyi grafikçiler tanıyorum ... ve bazı aptal yerel işletmeler için 150 dolar için aptal web siteleri yapan bazı "her şeyi biliyorum" Bu arada bilgisayar, vb. Çünkü o kadar çok alanda çok az şey biliyorlar ki, yapabilecekleri tek şey bir wordpress teması kurmak veya msoffice'in neden çalışmadığını kontrol etmek.
Slawek

-1 bir cevaptan daha çok rantlu olmak ve kişisel deneyiminizi dünyayla karıştırmak için. Hangi "araştırmayı" kastettiğinizi görmek isterim. Bu günlerde ortaya çıkan pop nosyonu, bir alanda uzmanlığın geliştirilmesinin 10.000 saat aktif pratik yapması gerektiğidir. Bu Malcom Gladwell'in yazıları ile popülerdi. Muhtemelen bir başparmak kuralı olarak fena değil, ama pek bir fizik yasası değil. 10.000 saat, beş yıllık 40 saatlik haftadır ve elbette birçoğumuz kariyerlerimizin erken aşamalarını çok daha uzun saatlere çıkardık.
Charles E. Grant,

Hayır, uzmanlık alanları var. Uzmanlıkları programlamadır. Programlama dilleri, ihtiyaç duyulduğunda toplanacak ve ihtiyaç duyulmadığında atılacak olan ticaretin araçlarıdır. 10.000 saatlik şey Malcolm Gladwell'in kitabı tarafından popülerleştirildi. Ama ne dediğini anladın mı? Mesela 10.000 saat süren müzik dehası olduğunu söylüyordu. Piyano çalmakta iyi olmanın 10.000 saat sürdüğünü söylemiyordu.
Antonio2011a 21:11

Hiç kimse birden fazla dil öğrenmediyse, hepimiz assembler'da programlama yapardık. Bugün Groovy, Java, Javascript, SQL, Ant ve Selenium kullanıyorum. Takımımda 7 kişiye ihtiyacım yok. Yeni bir teknolojiye sahip olan ve işleri gerçekleştirebilecek insanlara ihtiyacım var.
kevin cline
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.