Birçok programlama dilinin parçalarını öğrenmek acı veriyor mu?


37

Programcılık kariyerime 9. sınıfta BASIC ile başladım. Eklemek, çıkarmak ve yazdırmak için basit programlar yazarak biraz BASIC öğrendim. Sonra üniversiteye gittim ve Bilgisayar Bilişim ve Sistem Mühendisliği bölümünden mezun oldum. İlk yıl C öğretildi ve bu konuda iyi bir bilgim var.

Sonra ikinci yılda C ++ 'ı öğrendim. Sadece bana bazı OOP bilgisini öğretti. Şimdi PHP (HTML ile birlikte) yapıyorum. C ++, BASIC veya PHP konusunda uzmanlaşmadım. Şimdi mobil geliştirmeye geçmeyi planlıyorum. Ancak öğrendiğim dillerde her şeyi kapsamadığımı hissediyorum.

Gerçekten önemli mi?

Yanıtlar:


50

Hepimiz sadece programlama dillerini öğreniyoruz. Dil uygulayıcılarını yalnızca bir dil bilgisinde 10'un 10'u olan kişiler olarak düşünürdüm .

Birden çok dil öğrenmek ve paradigmalar, sevdiğiniz ve sevmediğiniz şeyler için bir "tat" geliştirmenin tek yoludur. Sadece bir dil öğrenmiş olsanız bile, beğenip beğenmeyeceğinize gerçekten karar veremezsiniz.

Aslında bunu doğru şekilde yapıyorsun. Farklı sözdizimine, kütüphanelere ve çerçevelere maruz kalırken, her birinde öğrendiğiniz en önemli temelleri tekrar kullanabileceksiniz.


16
Bu cevabı seviyorum, sadece "sevdiğin şey" dışında ve "iş için doğru araç" dışında. Her sorunu çözmek için hiç kimse aynı dili kullanmamalıdır. Bu kötü bir yazılım geliştiricisi olur. Her dil ve paradigmaların lehte ve aleyhte olanlar vardır.
user606723

1
Derleyiciler ve tercümanların hataları olduğu göz önüne alındığında, çoğu dilde 10'a ulaşmanın insanca mümkün olduğunu sanmıyorum.
jmoreno

6
C ++ derleyicileri yazanların bile C ++ 'ı anladığını sanmıyorum. Bireysel olarak demek istiyorum. Açıkça kolektif olarak, tüm dili bir şekilde anlamak zorundalar, ancak bu gezegende hepsini anlayan tek bir kişi olduğunu sanmıyorum. Aslında, komite üyeleri genellikle yalnızca kendi uzmanlık alanlarını anladıkları konusunda oldukça açıktır. Benzer şekilde Java da: Martin Odersky kısa süre önce dünyada joker karakterleri anlayan 3 kişinin olduğuna inandığını söyledi. E-postanın tonundan kendisinin dahil etmediği izlenimini
edindim

2
Bu grupta, aslında Java Generics'i tasarlamasına rağmen (elbette Phil Wadler ile birlikte). Her ne kadar adil olmak gerekirse , açık ifadesine karşı aslında rızası olmadan tasarımına joker karakterler eklenmiştir .
Jörg W Mittag

1
@brian, güven bana, derleyicisini uygulayabilmek için dili bilmek zorunda değilsin. Sadece belirtimi kör olarak bir koda çevirebilirsiniz. Ancak, bunun sonucunda dilin en azından bazı temellerini öğreneceksiniz - bu yüzden yeni dilleri tercih etmem budur.
SK-mantık

21

Eğer hala üniversitedeyseniz, bildiğiniz dillerin hiçbirinde her şeyi yaptığınızı hissetmemeniz henüz önemli olmamalı. Bu dillerin arkasındaki ortak temel teorileri anlamak çok daha önemlidir. Temel bilgileri anladığınızda, ihtiyaç duyduğunuzda diğer dillerin ayrıntılarını öğrenebilirsiniz.


5
İlk iki yıl içinde, her 3 - 4 haftada bir yeni bir dil seçtiğimizi düşünüyorum. Pascal, proje çalışmamızın çoğunun temeli olan (1982-85) - bazıları işlevsel dillerdi. Niyetimin bir kısmı, "programlama" yı "kodlama" dan ayırmayı denemek ve sağlamaktı
Murph

12

Programlamadaki en önemli şeyin farklı paradigmaları anlamak olduğuna inanıyorum .

Sorunuzda Nesne Yönelimli Programlama'dan (OOP) bahsettiniz . Bu konuyu ele aldıysanız, yalnızca sahte kod ve temel olarak bazı grafik modelleme gösterimlerini (UML sınıf diyagramları gibi) kullanarak açıklayabilmeniz gerekir.

Java kullanmaya karar verip vermediğiniz, C ++ veya C # (...) size veya çalıştığınız şirkete bağlıdır, ancak asıl önemli olan, farklı sorunları anlamak / tanımak ve bunları çözmek için en iyi modeli seçmektir . Programlamadaki sorunları çözmenin çok önemli bir yolu , bu referans kitapta bulabileceğiniz tasarım kalıplarını kullanmaktır .

Gömülü dillere gelince, önemli olanın bu tür teknolojilerle ilgili farklı sorunları anlamak olduğuna inanıyorum.

Metaforik bir şekilde, bunu iyi bir bilimsel kitap yazmakla karşılaştırırdım; önemli olan açığa çıkardığınız teori, çözmeyi başardığınız problemler vb. Kitabı İngilizce, Fransızca ya da Japonca yazıp yazmamanız sonunda önemli değil.

Bununla birlikte, çok verimli bir şekilde yararlanmak için bu teknolojide uzmanlaşmak istiyorsanız, belirli bir dilin özelliklerini bilmek de önemlidir.


2
Paradigmalar için +1. X veya Y dilinin sözdizimsel şekerine odaklanmak önemli değildir (elbette her gün işte X dilini kullanıyorsanız buna ihtiyacınız vardır); yararlı olan farklı paradigmaları araştırmaktır, çünkü IMHO size problem çözmede daha açık fikirli ve yaratıcı olmanıza yardımcı olur.
sakisk

5

Benim düşünceme göre, dili çok sık değiştirmenin anlamı yok. Hiçbirini asla kavrayamazsın . Özellikle bazılarının dili yazmak için on yıl harcadığı ve kodlarının hala C gibi göründüğü C ++ gibi bazıları.

En iyi uygulamaları bir dilde yazamıyorsanız, devam etmeyin, IMO. Bu, birkaç yıldan fazla sürenin birkaç yıl sürmeyeceği anlamına gelir.


5

Bence, birçok farklı dili öğrenmek biraz zarar vermez, ama aynı zamanda en az bir veya iki tane daha derinlemesine öğrenmelisiniz.


3

Kariyerim boyunca AMOS Basic, Java, C ++, PHP, VB6, Delphi vb. Gibi birçok dil kullandım. Bugün C #, JavaScript, Ruby ve bazı Clojure'leri işyerinde kullanıyorum ve Pyhton, Erlang, Ortak Lisp ve Şeması.

Ancak bu sonbaharda blogum için özel bir x-mas takvimi yapmak istedim ve 24 ek dilde kendime alışmaya ve belirli bir sorunu çözmeye karar verdim. Bu harika bir deneyimdi, çok şey öğrendim ve biraz programlama bilginiz varsa bunu yapmanızı şiddetle tavsiye ederim.

Size verdiğim cevabım şudur: Birkaç dili gerçekten iyi öğrenin (oldukça farklı olmalılar), ancak birçoğunu örneklediğiniz ve tanıdığınızdan emin olun.

Bugün hem OOP hem de FP'yi (fonksiyonel programlama) iyi bilmek önemlidir ve hem statik hem de dinamik bir dilde rahat olmalısınız.

Not: Blogum Norveççe’de. Ancak içerdiğim dillerin listesini görmek isterseniz, buraya bakabilirsiniz .


2

Yeni bir şey öğrenmem gerektiğinde, belirli bir dilde öğrenmem gerekenleri öğrendim. Bir dile daha derinlemesine dalmam gerektiğini söyleyen "tetikleyici", belirli bir kod bitinin çirkin veya sakar göründüğü, sürdürülemez göründüğü veya test edilmesi ya da yorumlanması zor olduğu yönünde. Çoğu zaman bu tetikleyiciler, belirli bir programlama deyimi, stil, veri yapısı ve benzerleri hakkındaki bilgim eksikliğine işaret ediyor.


2

Birden çok programlama dilini öğrenmek iyi bir uygulamadır ve günümüzde gereklidir; Çoğu zaman, tercih ettiğiniz dili her şey için kullanamazsınız.

Başka dillerin işleri nasıl yaptığını görmenin faydaları bir programcı olarak size yardımcı olacaktır; Ara sıra zıplarken bile sözdizimsel hatalar yaparsınız (örneğin, eşitsizliği kontrol ediyor !=, ~=veya <>). Bir dilin sözdiziminden daha fazlasını öğrenirken dikkatli olmalısınız, ancak bir dil içindeki en iyi uygulamalar ve ayrıca genel iyi yazılım mühendisliği becerileri. C'yi öğrendiyseniz ve sonra C ++ 'ı öğrendiyseniz, C ++ kodu yazarken C ++ kodu tarzında olduğundan emin olmalısınız (yalnızca birkaç yeni anahtar kelimeyle C yerine. Birden çok sınıf / nesne varsa, referansları tercih edin) Ham işaretçiler vb.


1
Beni çalıştırmayın, eğer x <b> = </b> 5 Öyleyse. BASIC ile ilgili bir şey yaptıktan sonra tüm C kodumu bir hafta gibi kontrol etmem gerekiyor.
user606723

2

En azından farklı programlama paradigmalarından dil öğrenmek iyi! İşlemsel, bildirimsel, işlevsel, nesne yönelimli, prototipik ve dinamik bir dil - her bir programlama sınıfı bir sorunun nasıl organize edileceğine ve çözüleceğine ilişkin kendi içgörü bilgisini sunar. Sonunda, en üretken ve mutlu olduğunuz bir veya daha fazla paradigmayı keşfedersiniz ve kullanırsınız.


2

Kesinlikle hayır. Elbette farklı dil stilleri de öğrendiğinizden emin olmak istersiniz. Hem C # hem de Java'yı öğrenmek, aklınızı hiçbir şekilde genişletmez, ancak Java ve Haskell'i öğrenmek olacaktır.

Sizi, Ruby, IO, Scala, Erlang, Prolog, Clojure ve Haskell'e girişte izleyeceğiniz Yedi Hafta İçindeki Yedi Dil Kitabı'na göz atın . Dillerden hoşlanıyorsanız, bu kitabı seveceksiniz.


1
Java'dan sonra C # öğrenmek, işlevsel programlaması (ve diğer eksik Java özellikleri) sayesinde fikrinizi genişletebilir. Fakat eğer sadece öğrenme amaçlıysa Haskell muhtemelen ne kadar işlevsel olduğu için muhtemelen çok daha iyi olacak.
salı

1

Peki, C ve C ++ mobil programlamada size zarar vermez. Her ikisini de Cocoa Touch veya Android NDK ile birlikte kullanabilirsiniz, bazen performans için de ihtiyacınız olabilir. Ayrıca, bazen istersiniz çünkü birkaç platformda çalışan kodları yazmak istiyorsunuz. Bu durumda, yalnızca üçüncü taraf bir çerçeve kullanmadığınızı varsayarak, uygulamanızı C / C ++ dilinde yazabilir ve gerekli yerel öğeler için platforma özgü paketleyicileri derleyebilirsiniz (örneğin, bir OpenGL bağlamı elde etmenin tek yolu) iPhone'da yerel CAEAGLLayer sınıfını kullanmaktır).

Yani çekmecede ne kadar çok alet varsa, işi yapmak için o kadar çok seçenek var. Çeşitli görevlerde uzmanlaştıkça bazılarını tercih edersiniz. Yalnızca kullanıcı arayüzü şeyler yaparsanız, C tüm zamanların favorisi olmayabilir. Yapmak istediğim şeyler hakkında daha fazla endişelenip, daha sonra bunları yapmak için ihtiyaç duyduğum herhangi bir aracı öğrendim.


1

Asla hiçbirini iyi tanımadığı için biraz Fransızca, İspanyolca, İngilizce, Arapça, Hintçe ve Çince öğrenmek kadar faydalı.


6
Bununla ne demeye çalıştığını bilmiyorum.
svick

Birçoğumuzun anadillerimiz bile "iyi" olmadığını biliyor, değil mi?
Spidey

1

Aksine, yeni bir programlama dili öğrenemediğim / edemediğim zaman acıtıyor. Zaman yetersizliğinden veya başka nedenlerden dolayı olabilir. Gördüğüm kadarıyla, programcılar / yazılım geliştiriciler, dilleri zorlamaktan, daha iyi şeyler / ürünler koymaktan hoşlanıyorlar ve her zaman aynı şeyi yaptığınızı görünce iyi hissetmiyorsunuz. Yani yeni bir meydan okuma, yeni bir dil, öğrenmek ve daha fazla ürün koymak için yeni bir şey istiyorsunuz.

Bu yüzden bana yeni dilleri, yeni kütüphaneleri, yeni yaklaşımları, yeni teknolojileri takip etmenin heyecanını veriyor. Ama hepsini elde etmek için zamanım yok ve insanlar her zaman yeterince derin ilerlemeyebilir. Bu yüzden daha fazla öğrenmek değil acıtır; ama daha fazlasını öğrenmek için canımı yakmaz.


0

Brian, FrustratedWorFormsDesign ve SRKX ile aynı fikirdeyim, ancak üniversite süresince bu bilginizi birden fazla programlama dili ve paradigma ile genişletmenin iyi bir profesyonel olmak için arzu edilen bir yol olduğunu eklemek isterim.

Üniversiteden oluşturulmuş bir programcı olarak gelmeniz gerçekten mümkün değil. Programlama zordur ve sektördeki yıllara iyi programcılar ile birlikte çalışarak, iyi eğitim programlarına ve topluluk toplantılarına katılmaya ihtiyaç duyacaksınız ve çoğunlukla, ustalık yolunu öğrenene kadar zanaat sorunları ile yüzleşmek ve çok başarısız olmak zorunda kalacaksınız. o.

Çoklu paradigmalar, çoklu diller öğrenmek, bölgemizin çoklu problemlerini çözmek, size zanaatınızı kendiniz öğrenmek için her gün sektörde profesyonel olarak hareket etmekte iyi bir destek tabanı sağlayacaktır.

Bir Compilers sınıfına katılabilirsiniz, ancak bir dil tasarımcısı, yaratıcısı veya hatta bir derleyici geliştiricisi olarak çıkamazsınız. Adımları, süreçleri, problemleri ve temel çözümleri alacaksınız ve bu bilgiyi geniş bir yelpazedeki problemlere adapte etme avantajını sağlayacak.


0

Kısa cevap: Hayır.

Uzun cevap: Bir programcı, yazılım mühendisi veya tasarımcının işi çok fazla belli bir dilden bağımsız ancak belli bir metodolojiye bağlı. Örneğin, Nesneye Yönelik Programlama, nesnelerin bellekte ve çalışma zamanında nerede bulunduklarına, ne kadar erişilebilir olduklarına ve daha sonra kullanmak için ne kadar uygun olduklarına (kalıtım ve enkapsülasyon) ilişkindir. Java, üst düzey miras sınıfına sahip olma gibi, beğenip beğenmediğiniz ve C ++ belirtmediğiniz herhangi bir şeyi olmayan uygulamalar gibi farklılıklar gösterir.

Birçok dil özellikleri paylaşır (ve birçok sapma). Sözdizimi elbette farklıdır ve zorunlu ve işlevsel gibi tamamen farklı paradigmaları karşılaştırdığınızda daha zordur. Ancak String işlemi, gittiğiniz her yerde aynıdır, bir kez sözdizimi, indeks ve değişkenlikten çok az soru alırsanız. Statik yazarak olan herhangi bir dilde genellikle bir tür döküm ve baskı yöntemi vardır, ancak bunu nasıl ve ne zaman yapabildiğiniz, dil tasarımcısına bağlıdır.

Dil aracıdır. Sadece kemerine daha fazla alet koyuyorsun. Ancak alet sadece onu kullanan ustalar kadar iyidir.

Şimdi, kaç tane öğrendiğin kişisel bir seçim. Yeni bir dil öğrenmek uğruna asla bir dil öğrenemem. Yeni bir dil öğrenmek için herhangi bir seçenek, bir ders şartı (geçen yıl tek bir sınıf için js, php ve R'yi almak zorundaydı), mevcut bir proje şartı (işin% 90'ını perl 6'da yapılıyorsa) gerektiriyor. İşe alındığınızda, kalan% 10'dan sonra) veya uygulamaya özel bir fayda (Java'nın istatistiksel analiz için bazı şekerli kütüphane ile birlikte kullanıldığını söyleyin).

Bu, orada neyin mevcut olduğunu öğrenmek istediğinizi söyledi. Üniversitem bu konuda bir programlama dersi verdi, Programlama Dili Kavramları . Teorik bilgisayar bilimlerinden ziyade pratik olarak kabul edilebilecek şeylerin temelini kapsayan sıkı bir matematik veya kodlama ile ilgili kodlama dersi değildi. Harika bir kurstu ve keşke 3-4. Yerine 1.-2. sınıfta sunulan bir şey olsaydı. Metin, Programlama Dilleri Kavramları idi . Dışarı çıkıp bu kitabı okumak zorunda olduğunuzu söylememekle birlikte, bu kesinlikle ufkunuzu genişletecektir.


0

Gördüğüm gibi, her dilin birazını öğrenmek zorunda değilsin. Ancak diğer dillerde de gerekli olacak çok temel özellikleri öğrenmeyi deneyin.
Örneğin, OOPS kavramları Java , PHP veya başka bir dilde olması gereken tüm dillerde gereklidir .
Bellek ayırma kavramları birçok programlama dilinde oldukça benzerdir. Asla kaçırmamanız gereken bu tür konular.
Her dilin gramer ve kuralları vardır, aynı programlama dilleri için de geçerlidir; Dennis Ritchie bu gerçeği kabul etti. Öyleyse, o dilin dilbilgisi öğrenilmelidir.
Ama gördüğüm gibi, iki programlama dili arasındaki ortak olmayan faktörleri öğrenmelisin. Hangi dilin ne için olduğunu tanımlamanıza izin vereceklerdir. C ++ hepsi temel OOP (Nesneye Yönelik Programlama), yani OOP kavramlarını öğrendikten sonra PHP ve Java'da da göreceğiniz dilbilgisini öğrenirsiniz.
Benim öğrenme akışı oldu:
Temel 5 (kısmi) Görsel -> (kısmi) HTML 2.0 -> (kısmi) C -> (kısmi) CPP -> (kısmi) Java
ve sonra öğrendiğim C Dil sonra yeniden C ++ ardından JAVA ( bu zamanı tamamladım) sonra Java ve XML ile aşina olduğum için android'e taşındım(kısmi) ve ortalama zamanda öğrendim. İlk girişim daha az öğretti ancak ikinci girişimde bir dahaki sefere size yardımcı olacak her şeyi öğrendiğinizden emin olun.


Bu yazı okumak oldukça zordur (metin duvarı). Sakıncası var düzenleyebilir daha iyi bir şekle ing?
tatarcık
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.