C ++ 'nın tüm önemli yönlerini öğrenmiş ve dilin temellerini çok iyi bilen birinin diğer dilleri (Python, Perl, Java gibi) daha hızlı ve daha kolay öğrenmesi olasılığı var mı?
C ++ 'nın tüm önemli yönlerini öğrenmiş ve dilin temellerini çok iyi bilen birinin diğer dilleri (Python, Perl, Java gibi) daha hızlı ve daha kolay öğrenmesi olasılığı var mı?
Yanıtlar:
Herhangi bir programlama diliyle ilgili derin bilgi birikimi, diğer dilleri daha hızlı seçmenize yardımcı olacaktır. Bunun nedeni kısmen programlama sözdizimini öğrenmekten daha çok düşünmenin bir yoludur . Çoğu programlama uygulaması diğer programlama dillerinin çoğu için de geçerli olacaktır. Bu nedenle insanlar ikinci programlama dilini her zaman birinciden daha hızlı öğrendiğinizi söylerler.
C ++, diğer dillerden çok daha fazla 'kontrol' sağlayan bir dildir. Bu hem iyi hem de kötü olabilir. Örneğin, gerçek bir silah, ormana gittiğinizde bir hava tabancasından daha iyidir (çünkü aslında onunla bir şeyler vurabilirsiniz), aynı zamanda sizin ve çevrenizdekiler için de daha tehlikelidir. C ++, diğer birçok dilde endişelenmenize gerek olmayan bellek yönetimi gibi kavramlara sahiptir. Ancak bu kavramları tam olarak kavramak, otomatik bellek yönetimi dilleriyle çalışırken bile anlamsız olmaktan uzaktır. Ayrıca bitsel işlemler gerçekleştirebilir ve C ++ gibi bir dille 'metale' çok daha aşağı inebilirsiniz. Bu alanlarda temel bir anlayış bile, herhangi bir dilde bir programcı olarak size çok yardımcı olabilir.
Şahsen C ++ öğrenmeden önce Java'yı ilk 3 yıl önce öğrendim ve bir şekilde pişman olduğumu söylemeliyim (uni ders ...). Bu öğrenme C ++ (hala öğreniyorum - 'derin' bilgiden uzak: D) istediğim kadar basit değil. Bunu başka türlü yapsaydım, bunun benim için çok daha kolay olacağını söyleyebilirim. Özellikle bir şeyin neden belirli bir şekilde yapıldığını bildiğinizde ve sadece dilin otomatik büyüsünden emin değilsiniz. Eğer bir fikir vermeme izin verilirse, şunu öneririm: C (temel ve evrensel programlama paradigmaları için) -> C ++ (OOP'un bellek yönetimi ile birlikte temel anlaşılması için) -> O zaman bir 'gerçek' OOP diline bir iyi bir temel veya C ++ 'ta daha gelişmiş konulara devam edebilirsiniz.
OR
ve arasındaki farkla mücadele eden yeni başlayanlar için çok karmaşıktırAND
Ne yazık ki hayır. Bu aslında programlama sınıflarında, özellikle başlangıç seviyesindeki sınıflarda C ++ öğretirken büyük bir sorundur: programlama ilkelerini öğrenebilir veya C ++ dilini öğrenebilirsiniz, ancak C ++ dilinde her ikisini de etkili bir şekilde öğrenmek için çok fazla tuzak ve aptal küçük gotchas var bir dönemlik dersin kapsamı!
C ++ 'da denenmiş ve sonunda sırf atalet yoluyla dilde deyimsel hale gelen birçok şey var, o zamandan beri diğer tüm dillere bakıldı ve reddedildi, çünkü büyük bir hata olduğu ortaya çıktı. Bunların en önemlileri C ++ 'ın Şablonları ve C ++' ın nesne modelidir (değer türleri olarak nesneler asla iyi bir şey değildir, çünkü Liskov'un yerine koymayı ve OOP'un kendisini bozar.)
Bu yüzden önce C ++ hakkında derin bir bilgi sahibi olursanız ve daha sonra diğer programlama dillerini öğrenmek istiyorsanız, diğer programlama dillerinde etkili olabilmek için öğrenmeniz gereken çok sayıda zararlı ve ters ürperti kabuk olacaktır.
Hayır. C ++ 'ı iyi bilmek, C ++ gibi diğer dilleri öğrenmeyi kolaylaştıracaktır. Ama bu sıkıcı olurdu. Neden aynı iki dili bilmek istiyorsun? Bu sana bir şey almıyor. (Bunun C ++ 'a özgü olmadığını unutmayın. Herhangi bir dil için geçerlidir. Doğal dillerle karşılaştırın: İtalyanca öğrenmek diğer dilleri öğrenmeyi kolaylaştırmaz. İspanyolca, Fransızca veya Portekizce öğrenmeyi kolaylaştıracak ve üç öğrenmeyi kolaylaştıracaktır. bunlardan dördüncüyü öğrenmeyi kolaylaştıracaktır, ancak tüm Romance dillerini öğrenmek bile bir parça Fince, Çince, Hintçe, İbranice, Arapça, Paştu, Yunanca vb. öğrenmenize yardımcı olmaz.)
Programlama dilleri paradigmaları uygular. Peter van Roy 34 ana programlama paradigmasının bir posterini topladı .
Paradigmalar, sırayla, kavramlardan oluşur. Bu poster yaklaşık 18 kavramı listeliyor.
Tüm paradigmalar (veya en azından posterdekiler) bu kavramlardan oluşur. Tüm diller, bu kavramlardan oluşan bir veya daha fazla paradigma uygular. Dolayısıyla, bu kavramları öğrenirseniz, (bir anlamda) her programlama dilini bir kerede öğreneceksiniz.
Elbette hala birçok dile özgü tuhaflıklar var (aralarında sözdizimi). Ayrıca, bu poster yazmayı tamamen görmezden gelir ve tabii ki bağımlı bir tip sistemi bir yana, Sistem F <: style tarzı tip sistem, Scala tarzı tip sistem veya dinamik ördek tipi tip sistem arasında önemli bir fark vardır. à la Idris, Agda, Coq, Guru veya ATS.
Herhangi bir programlama dilini derinlemesine bilmek , başkalarının, en azından aynı ailedeki diğer dillerin öğrenilmesinde yardımcı olacaktır. Örneğin, C ++ bilgisi LISP veya Haskell ile pek yardımcı olmaz, ancak nesne yönelimli prosedürel diller için faydalı olacaktır. Benim yaklaşımım, dillerin farklı ailelerinden (prosedürel, işlevsel, nesne yönelimli, vb.) Her birinden bir dil öğrenmek ve öğrenmekti, o zaman bu bilgi o ailedeki diğer dillere aktarılabilir. Öte yandan, derin bir APL bilgisi başka hiçbir şeye yardımcı olmaz ...
Burada farklı bir yorum yapacağım.
C ++, nesne sahipliği ve ömrü gibi kavramları dikkatlice düşünmeye zorladığından, bellek ve veri yapıları hakkında bilgi edinmek için iyi bir dildir. Bellek ve veri yapıları hakkında bilgi edinmek, herhangi bir yazılım mühendisliği müfredatının önemli parçalarından biridir.
Ancak veri yapıları hakkında bilgi sahibi olmalısınız. Eğer sadece "C ++ öğrenirseniz" çok fazla kazanmazsınız ve kısa vadede diğer dilleri öğrenme sürecini yavaşlatabilir.
Kolejdeyken, Veri Yapıları, CS1'den sonra (sınıfın en az yarısının çıkmış olduğu) alınan birinci sınıf seviyesinde bir dersti. Zordu. Tabii biçimi Burada [Meselâ daha önce hiç görmediğiniz bir veri yapısı var" temelde oldu solcu yığın ]., Byte-için-byte haftada C ++ bunu gerçekleştirme ve çıkış tam olarak bizim beklenen çıkışı maç yapmak, biz bu yüzden otomatik olarak not verebilir. " Ardından, önümüzdeki hafta yeni bir veri yapısı ve yeni bir atama alacaksınız. Muhtemelen bir derste, diğer derslerimin hepsinde yaptığımdan daha fazla şey öğrendim.
C ++ 'nın değerli olması için yapmanız gereken bir tür öğrenme.
Öğrendiğiniz her dil bir sonraki dili öğrenmeyi kolaylaştırır, özellikle de aynı paradigmada. Birbirlerinden yoğun bir şekilde ödünç alırlar ve bir süre sonra yeni bir dilin sadece birkaç farklı bükülme ile diğer dillerden bir dizi özellik gibi göründüğü noktaya gelirsiniz.
C ++ bu konuda diğer dillerden daha iyi veya kötü olduğunu düşünmüyorum. Bildiğim daha ayrıntılı dillerden biridir ve diğer birçok dilde kolay olan bazı şeyleri zorlaştırır, ancak bu, bir sonraki dili öğrenmeyi kolaylaştırmak anlamına gelmez . Yine de genellikle bir sonraki dilin kullanımını kolaylaştırır . Bir fark var.
Hayır. C'yi veya "temelde C" olan C ++ alt kümesini derinlemesine bilmek, diğer dilleri öğrenirken, en azından uygulamalarının ne yapması gerektiğini resmederken yardımcı olacaktır. Öte yandan, derin bir C ++ bilgisi, diğer dilleri öğrenirken çoğunlukla kafa karıştırıcı veya ilgisiz bilgi olacaktır; C ++ 'ın nesne yönelimini bir yüzey seviyesinden daha fazla öğrenirseniz, örneğin Perl / Python / Ruby'ye geçtiğinizde, bildiğiniz şeyleri kullanmaktan daha fazlasını öğrenmek için daha fazla zaman harcarsınız, çünkü bu dillerdeki nesneler bir bambaşka bir yolC ++ 'dan daha. Aynı şey, diğer birçok dil ve diğer dil özellikleri için daha büyük veya daha az ölçüde doğrudur (örneğin, C ++ şablonları ve Haskell polimorfizmi temel olarak aynı özelliktir, yine tamamen farklı uygulamalarla). C ++ 'ın derin bilgisi çoğunlukla C ++' ya özgü olacaktır.