Yerel bir kolej, daha önce programlama deneyimi olmayan birinci sınıf üniversite öğrencilerine (16 yaşında) C ++ öğretiyor.
İlk programlama dili olarak C ++ uygun mu?
Yerel bir kolej, daha önce programlama deneyimi olmayan birinci sınıf üniversite öğrencilerine (16 yaşında) C ++ öğretiyor.
İlk programlama dili olarak C ++ uygun mu?
Yanıtlar:
Kesinlikle hayır .
Öğrenciler için düşündüğünüz herhangi bir amaç için, başka bir dil veya bir dil dizisi daha hızlı ve daha iyi olacaktır. Örnekler.
"Öğrencilerin düşük seviye kavramları anlamaları gerekir."
"Düşük seviyeli" kodlama, nesnelerin alınmasını new
, geri beslenmesini delete
ve bazen de olmaması gereken bir yere işaret eden bir işaretçiye sahip olmasından ibaret değildir. İşlevler, sınıflar ve şablonlar düşük seviye değildir. RAII, 12 yolları kullanmak const
, std::ostream::operator<<
, protected
ve new
düşük seviye kavramlar değildir. Bu şeylerin düşük düzeyde çıkarımları var ve bunları aylarca veya gelecek bir sınıfa kadar atlıyorsunuz ve bunun yerine C ++ anlambiliminin dağlarını öğretiyorsunuz.
Ben montajcı iyi bir çevre ve MIPS veya MMIX gibi öğretim materyali ile öneririm. Aceleniz varsa, en azından assembler çıkışına bakmak için C ile şekillerini öğretin. Bu size C ++ 'ın yaptığı tüm düşük seviye anlayışını ve ardından bazılarını daha hızlı verecektir.
"Öğrencilerin nesne yönelimini anlaması gerekir."
C ++ 'a yerleşik nesne yönelimi, OO kavramlarını veya neredeyse tüm diğer üst seviye konseptlerini öğretmek için aşırı karmaşıktır. Bunun için olası nedenlerin güzel ve uzun bir listesi için C ++ SSS bölümüne bakın . Yeni programlayıcılarla çok, çok uzun zaman alacak olan tüm bu şeylere de çarpmanız gerekiyor; ya da yeni programlayıcıları karanlıkta bırakarak, C ++ 'ı tam olarak bilmeden, çok fazla atlamalısınız.
C ++ 'ı öğretmeniz gerekiyorsa, önce nesnelerle (Python, Ruby, Squeak, Common Lisp, Raket) daha basit ve üst düzeyde bir dil öğrenmenizi öneririm. Bunun ötesinde, işlevsel bir dili ziyaret ederek polimorfizmi OO'dan ayrı bir kavram olarak öğrenin.
"Öğrencilerin şablonları ve şablon metaprogramlamasını anlamaları gerekir."
Kimse gerçekten sormuyor, ama keşke isterlerse. C ++ 'nın hoş şablonları var ve STL harika, ancak ilk önce C ++' ı öğretecek kadar yüksek öncelikli olmamalılar. OCaml veya Haskell tipi sistemin öğretilmesi ve daha sonra bu kavramların güçlendirilmesi zaten daha hızlı olabilir.
"Öğrencilerin problem çözmeyi öğrenmesi gerekir."
Evet, bunu herhangi bir dilde elde edersiniz ve eğer C ++ 'dan başka bir dilde ise daha fazlasını elde edersiniz, çünkü daha az bagaj var. Yine, öğrencilerin problem çözme becerileri yerine öğrenecekleri şeylerin bir listesi için C ++ SSS bölümüne bakın .
"Yukarıdakilerin tümü ve sadece bir dil kullanmamız gerekiyor." veya "İşverenler istiyor." veya "C tarzı bir dile ihtiyacımız var." veya...
Birden fazla dil öğretin.
Sadece bir dili öğreterek veya öğrenerek zamandan veya enerjiden tasarruf etmeniz fikri saçmadır. Herhangi bir dili öğrenmenin , X'in her bir dilde bir veya bir sayı olduğu tam olarak X adam ayını ( İPUCU! İPUCU! ) Alır . Bu, tüm bu 'gereklilikleri' ve 'çöp' testini atlayarak zamandan ve paradan tasarruf edebileceğiniz fikrine neredeyse aynı.
Birden fazla sözdizimine gelince, diğer dillere karşı çılgınca önyargılı hale getirerek her dilde C sözdizimini beklemelerini öğretirseniz, öğrencilere tehlikeli bir şekilde sakat kalırsınız.
Hemen hemen her yol C ++ ile başlamaktan daha hızlı ve daha iyidir. Basit bir üst seviye dil ve ardından C ++ öğrenmek daha hızlı olacaktır. Assembler ve ardından C ++ öğrenme daha hızlı olurdu. C ++ 'dan başka bir şey öğrencileri oraya daha hızlı götürecek ve önyüklemenin daha fazlasını bileceklerdir Sadece önce C ++ 'ı öğretme.
Hayır, C ++ deneyimli C ++ geliştiricileri için bile zor bir dildir. En basit algoritmalar için bile, birçok dil inceliklerini açıklamanız gerekir. Bir Hello World örneği düşünün:
#include <iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
}
Bu #include
komut ne ? Ne var std::cout
. Neden ::
? Nedir <<
? Ohhh, aşırı yüklenmiş bir operatör! Aşırı yüklenmiş bir operatör nedir? Sooo, çünkü ints
biraz değişiyor, ama her ne std::cout
ise, konsola bir şeyler çıkarıyor. Ohhh, std::cout
bir akarsu ve akarsuların <<
ve >>
operatörleri aşırı yüklenmiş.
Python'da da aynı örneği görelim:
print("Hello World!")
İşte bu, hadi bazı algoritmaları kodlayalım.
Muhtemelen iyi bir ilk dil değildir: karmaşık sözdizimi, çok sayıda kural, eski dil, hataya açık bellek yönetimi. Öğrencilerinize Smalltalk gibi daha fazla bir OO veya Python gibi programlamak için daha güzel bir şey veya Haskell gibi işlevsel bir şey öğretmek daha iyidir.
Daha iyi dilleri öğrendikten sonra, C ++ 'ı daha sonraki yaşamlarında öğrenebilirler (eğer yardım edemezlerse).
Kısa cevap: Evet!
Söyleyebilirm herhangi bir dil, uygun bir başlangıç ama özellikle C ++ (veya equivivalent) 'dir. Bu günlerde C # ve Java, kullanımda ve programlamada ana dillerdir, bunlarla hızlı bir şekilde API ve IDE'lere dayanmayı öğrenirsiniz, ancak C ++ ile baştan sona programlama, performans optimizasyonu, vb.
Programlama, döngü ve sıralamanın temellerini öğrenmek, sadece gizli bir dil kullanmadan önce .Sort ();
Aslında çok pratik bir sebepten dolayı ilk dil olarak iyi bir seçim olduğuna inanıyorum: C ++ 'ı öğrendikten sonra karşılaştığınız diğer diller öğrenmek bir esinti gibi görünecek.
15-16 yaşlarında kendime C ++ öğrettim.
Sihri başkalarına bırakmak ve kendi iç işleyişini kendiniz öğrenmek daha iyidir.
Açıkça söylemek gerekirse, giriş seviyesi C ++ sözdizimi ve anlambilimi anlayamazsanız, bilgisayarlarda bu kadar iyi olmazsınız. O kadar zor değil. "Sınıflı C" den kaçınmak için iyi bir neden yoktur.
Öğrencilerin şablon metaprogramlaması, polimorfik çağrıları çıkarmak ve çoklu kalıtım hiyerarşilerini çözmek için çalışmaya başlamalarını beklerseniz, bu ne tür bir dil için olursa olsun giriş seviyesi sınıfı için saçma olur.
Programlamanın karmaşıklığını öğrenciler için gizlemek isteme konusunda çok kötü bir eğilim var. Bu iyi bitmiyor (bkz. Spolsky'nin Java Okulları makalesi). Bu insanlar, kafasını dümdüz etmezlerse DailyWTF'ye çıkarlar. Soyutlamalar sızıntı yapar ve soyutlama kaçarsa (bu olmazsa), bununla başa çıkmaktan daha kötüdür. Ben ettik çalıştı giriş seviyesi C ++ öğrenciler için TA gibi. Her şey ya tamamen gizlenmeli ya da incelenmek üzere ışığa getirilmelidir. Büyü, öğrencinin düşmanıdır.
Makine kodunu derleyen bir başlangıç dili önermek zorunda olsaydım, muhtemelen bir Pascal değişkeni en iyi yaklaşım olurdu. Hatırladığım kadarıyla C ailesinden daha düzenli ve yapılandırılmış bir yaklaşıma sahip.
'Hayır' derdim. Programlama öğrenmek istekliyim ve istekliyim, ve üniversitedeki intro yılıma girdim. C ++ 'ı başka bir dilmiş gibi öğreten bir öğretmenle (kendileri için anlam ifade eden kavramlar, dilin veya gerçek dünya uygulamasının kavramlarını gerektirmez) ve her hafta bize hemen atılan projelerle düştüm ve birlikte yaktım. sınıfın yarısı. Öğretildiğimi bile sindirebilir, deneyimleyebilir ve uygulayabilirsem, test olarak ikiye katlanan proje ödevleriyle mücadele ettim. 100'den daha 200 seviyeli bir kurs olduğunu iddia ediyorum.
Gerçekten elimden geleni yaptım. Sempati istemedim, bunun zor olacağını biliyordum ama öğretmen bana yardım etmedi. Sadece gitmiş olduğum gibi ders kitabını okumamı söyledi.
Ruby veya Python'un birisini programlama dünyasına sokmak için çok daha iyi bir dil olduğunu savunuyorum (ve bazıları katılmıyorum). Temiz, özlü, okunabilir, daha net sözdizimi.
Yok hayır.
Bir öğretim dili olarak, C ++ yalnızca en kötü öğretim dillerinden biri olan C'den marjinal olarak daha iyidir. Çok fazla karmaşıklık ortaya koymaktadır, dilin bazı kısımları sezgisel değildir ve genel olarak programlamadan ziyade C ++ hakkında daha fazla şey öğreniyorsunuz.
Bu, C ++ 'ın (veya C) kötü dil olduğunu veya öğrenmeye değer olmadığını söylemez; Python gibi daha iyi öğretim dilleri var.
string
aşırı yükler operatörleri gibi o veri türünü +
, =
ve ==
şeyler yapmak için bu öğrenciler daha fazla veya daha az beklemek, dize işleme ihtiyaçları C. yapılması gereken acıya kıyasla Dolayısıyla "marjinal" . Ben de bir öğretim dili olarak tavsiye etmem.
İki temel ortaöğretim sonrası eğitim türü vardır: üniversite ve ticaret okulu. Aradaki fark, mezuniyetten sonra hazırlanmak istediklerinizdir. Otomotiv alanında, mekanik mi yoksa makine mühendisi mi olacağınızdır.
Bir mühendis olmak istiyorsanız C ++ ve bir tamircinin programlama eşdeğeri olmak istiyorsanız, kötü bir dil olduğu söylenen C ++ çok iyi bir ilk dildir.
C ++ 'daki bir intro sınıfı veri türleri, tanımlar, bildirimler, işaretçiler, bellek tahsisi ve benzeri konular hakkında çok fazla zaman harcayacak. Bunlar, faydalı bir şeyler yapabilmek için birkaç dönem inşa etmek istiyorsanız, ancak oraya vardığınızda, herhangi bir karmaşıklık derecesini idare etmek için bir temele sahip olduğunuzu bilmek istiyorsanız, bu harika bir temeldir.
Öte yandan, daha hızlı bir şekilde daha yararlı bir şey yapabilmek istiyorsanız, ancak etki alanı ve karmaşıklığın sınırlı olup olmadığını dikkate almıyorsanız, o zaman bütün bu zamanları önünüzdeki düşük seviyeli konseptlere harcamak israf olacaktır. Harika bir html form validator yazabilen, ancak bir aygıt sürücüsü tasarlamanın nasıl yapılacağına dair hiçbir ipucu olmayan çok sayıda programcı vardır.
Emin. Benim ilk dilim C idi, ama bu sadece sınıfımızı C ++ 'da rahatlatmak içindi. Üniversiteye girdiğimde Java kullanımı kolaylaştı. C ++ biraz daha dik bir öğrenme eğrisine sahip olabilir, ancak düzgün bir şekilde öğretilirse iyi olmalıdır.
Hayır, C ++ ilk dil olarak uygun değildir. Burada gösterildiği gibi, birçok profesyonel programcı bu görüşü paylaşmaktadır, ancak bu aynı zamanda profesyonel öğretmenlerin sahip olduğu bir görüşdür.
Carnegie Mellon Üniversitesi dekanından bir raporun , yeni başlayanlar için programlama dersine giriş dersi için C ++ kullanımı hakkında söylediklerinin:
C veya C ++ gibi standart diller bu kurs için uygun değildir çünkü karmaşıklıkları ve eksiklikleri hem gayri resmi hem de mekanize muhakeme tekniklerini engellemektedir.
CMU, zorunlu ve işlevsel olmak üzere iki giriş dersi sunmaktadır. Fonksiyonel programlama için SML seçildi. Zorunlu ders için neyin seçildiğini bilmiyorum, ancak rapor C alt kümesini kullanıyor.
Kesinlikle C ++ ilk dil olabilir. Ama bunun ne kadar iyi öğretildiği hakkında.
Herkes, ilk dilin kavraması çok kolay olduğunu söylüyor. Ancak, demek istediğim, insanların çoğu lisans düzeyinde programlamaya başlar. Böylece, kavrayabilecekleri bir şeyleri öğretebilirsiniz. Ve C ++ ile daha düşük seviyeden daha yüksek seviyelere kadar programlama yapabilirsiniz.
Kesinlikle değil.
Yolum olsaydı, akademik bir ortamda neredeyse tamamen kullanılmasına izin vermem. Zaten yapılmış olanlara aykırı olan nedenlerden dolayı değil, ancak çok fazla sayıda C ++ (veya varyasyon) olduğunu düşündüğünüz için hemen hemen her sorunun cevabıdır çünkü onu hemen hemen her durumda kullanabilirsiniz. Programlamanın tornavidasıdır.
Bazı insanlar iş için mükemmel bir araç olan vidaları sıkmak için kullanırlar. Diğerleri onu bir prybar gibi kullanırlar, ancak çoğu zaman etkilidirler, gerçekten ideal değildirler, çünkü babanızın size söyleyebilecekleri ne olursa olsun bir tornavida bir prybar değildir ve kötüye kullanım nedeniyle feci bir şekilde başarısız olabilir; Bir güç çubuğunun karşılaşabileceği tür güçler için Yine de diğerleri onu zımba ya da keski olarak kullanmaya çalışabilir ve tornavida tutamağı, zımba ya da keski dayanacak şekilde tasarlanan çarpıcı bir suistimal türü için tasarlanmadığından hemen hemen her zaman sorunla karşılaşırlar.
Kanımca, bir programcının işi genel olarak gerçek sorunları bir dereceye kadar gelişmiş verimlilik (kaynakların bir göreve bağlılığını azaltma), hız (bir görevi yerine getirme süresini azaltma), öngörülebilirliği (tekrarlanabilirliği arttırma) sağlayan otomasyona çevirmektir. Bir görevin) veya organizasyon (görevler arasındaki ilişkinin bilincini arttırmak).
Program yapan herkesin bilgisayarların düşük seviyeli işlemleri ve özellikle de cihaz IO ve bellek tahsisi hakkında bazı bilgilere sahip olması gerektiği anlaşılabilir olmakla birlikte, bu bilgiyi gerçekten önemli ölçüde kullanmak zorunda kalmamak, kesinlikle bunun için kaldırabiliriz. görevlerin büyük çoğunluğu. Sorunun daha geniş kapsamını anlamadan bunu yapmaya çalışmak, çabaya istenmeyen bir risk getirir.
İlk programlama dilinin C / C ++ veya yakın değişkenler olması saçmadır, çünkü C ve türevlerinin çözdüğü sorunların sınıfı, mevcut ve gelecekteki sorunların keyfi olarak büyük bir yüzdesi için kesinlikle uygun değildir (birinin kurtarması gereken yerler hariç) daha önce, bir tornavida programı) ve aslında daha küçük bir sorun kümesidir. Çoğu programcı, küçük mobil, birbirine bağlı cihazların prevelansını artırmasına rağmen, temel işletim sistemi özellikleri veya doğrudan cihaz arayüzleri geliştirmeye asla yaklaşmaz. Çoğu bizim gibi çalışacak ve yaşayacak. İki nesilden daha eski kodları düzeltmek ve iptal etmek, zaten yaş gösteren teknolojiyi uygulamak ya da katil (x + 1) uygulamasında teknoloji alanında çalışmak.
İlk dil için, LabView'ın hafif ama zengin özelliklere sahip zengin bir çeşidi olan Lego NXT'ye bakardım. Lego NXT, ticari girişimlerde yaygın olarak kullanılmamakla birlikte, programlamasının temel doğasını "sensör açısından zengin" bir şekilde sunacaktır. Javascript veya TCL / TK gibi biraz platform tarafsız bir komut dosyası dili ile eşleştirmek olabilir. Her ikisi de, çok temel fakat etkili işler yapmak için keşfetmeniz gerekenler açısından göreceli olarak düşük etki olacaktır, geri besleme döngüsü ve değişken derecelerde problem karmaşıklığı ortaya koyma ve çözme esnekliği açısından yüksek getiri. Ayrıca, öğrencilere, konserve ortamda sağlananları aşma olasılığını keşfetmeleri için iyi bir fırsat sağlar: karanlıkta, nemli ortamda çalışmayı denemek için bir şans,
Dört silindiri otomatik olarak kullanmayı öğrendikten sonra, gerçekten ilgileniyorlar ve motive olmuşlarsa, onları büyük v8 manuel hotrod'a yükseltin. Joel rock yıldızı programcılarını ayaklarının altındaki herhangi bir taşın altında bulamazsa, başka bir yere bakmaya devam etmek zorunda kalabilir ya da alet kutusunda neden bir sürü tornavidaya ihtiyaç duyduğunu yeniden düşünmesi gerekebilir.
C ++ 'da yeni başlayanların kolayca hata yapabileceği noktalardan bazıları şunlardır:
Test etmek istediğiniz yere ödev verme = vs ==
Eksik ;
Kıvrımlı braketlerin okunabilirliği - örneğin paskal başlangıç sonu
Ve sonra karıştırmak için tüm dahil dosyaları, makrolar, hafıza yönetimi vs.
Bu nedenle, C ++ 'ın başlayacak en iyi dil olmadığını söyleyebilirim - ancak öğrendiğinizde çok yararlı olabileceğinden şüphe yok.
- Başkalarının da önerdiği gibi - hatalardan daha kolay kurtulmak için C #, Java veya hatta VB - ve sözdizimi vurgulaması, hata ayıklayıcı vb. İle iyi bir IDE kullanırdım.
Üniversitedeyken C ++ üniversitenin ilk yılında öğretilen temel dildi. Teori, bazı karmaşık programlama kavramlarını içermesiydi, dolayısıyla eğer ustalaşabiliyorsanız, diğer dilleri de seçebiliyordunuz. Bana iyi bir temel olarak hizmet etti.
Bunu söyledikten sonra, son senem boyunca, ana dili Java'ya çevirip değiştirmeyeceğinin belirlenmesi için bir komitede görev yaptım. Birkaç önde gelen işveren ve bölümün bazı mezunları ile konuştuktan sonra, Java'ya geçiş yapmanın öğrencilerin ilgisini çektiği tespit edildi. Konuştuğumuz işverenler, insanları işe almak için kullandıkları bir dilde deneyime sahip olmalarını istedi. Şimdi, 10 yıl sonra hala Java'yı ana dilleri olarak kullandıklarına inanıyorum.
Benzer bir kayda göre, birkaç yeni üniversite mezunu için gerçekten iyi C ++ becerilerine sahip olmak istiyoruz. Hiçbir şey bulamadık.
Evet derim. Ancak, herhangi bir dil gerçekten ilk dil olabilir. C ++ 'ın iyi olduğunu düşünüyorum çünkü karmaşık ve bazen zor olsa da, gerçekte neler yapabileceğinizi gösterir (daha az sınırlama). Ayrıca, diğer dillerde almaya hazır olmanıza yardımcı olacak bazı nesne yönelimli bir tasarıma sahiptir.
C ++ benim ilk dilimdi ve öyleydi. OOP düşüncesinde erkenden düşünmemi sağladı ve bunun için minnettarım. Ama sonunda, gerçekten yapmak istediklerinize geliyor. Dil o kadar önemli değil, çünkü bir dili iyi öğrenirseniz, başka bir dil seçmede sorun yaşamayacaksınız. Ne yapmak istiyorsun? Oyun yapmak? Cep telefonları için program? Her birinin kendine daha uygun araçları ve dilleri olacak.
C ++ uzman bir dildir, acemi değil ... önce C, Java ya da C # ya da Python değil ... neden? Çünkü C size hafızanıza ve tüm diller tarafından "gizlenmiş" işaretçiler gibi zor kavramlara rağmen her yerde bulunmadığını öğretir. Neden hafızanın bazen serbest bırakılacağını bile anlamayan ve çöp toplayıcısının tüm kodlama metinlerini temizleyen küçük bir cüce olmadığını düşünen pek çok genç geliştirici gördüm: XXXXGb olsa bile patlattı RAM ... Ama çöp toplayıcısının neden her şeyi sihirli bir şekilde temizlemediğini anlamıyorlar! Ve bu tür geliştiricilerin C ++ 'da (ve hatta Corba'da daha çılgınca) kodlandığını gördüm ve bu bir katliamdı !!!!!!!!!! Bu yüzden C kodlama öğrenmek ve sonra nesne kavramları ve çevresindeki tüm şeker için Python / Java / C # gidin. Sonra bunların hepsini anladığınızda, C ++ 'a gidersiniz ve C ++' ın gücünü hissedersiniz ancak tüm tehlikelerini ve neden kimse tarafından kullanılmaması gerektiğini keşfedersiniz;)
YOK HAYIR. C ++ 'nın sahip olduğu o kadar çok şey var ki bu bir aceminin anlamasını zorlaştırıyor. “Tüm programlama dilleri eşit” yanlışına girmeyin.
Basic veya Pascal ile başlayın ("onlar" kullanımdan kaldırıldı "dır.) Ve daha sonra C / C ++ / Java / C # / Perl ile. Ya da bir şansınız varsa, önce Logo ve Karel, sonra da Temel veya Pascal ile.
PD Bazı üniversitelerin ve kolejlerin bir Programlama Dili kullanım ve karşılaştırma sınıfı var, ve o sınıfa öğrettim ;-)
Programlamanın temellerini öğrenmek için herhangi bir dili seçebilirsiniz. C / C ++ dilinde öğrendim. ancak 7 yıl sonra, okulumda araçlar / diller değişti ve java / C # tercih edildi. diller sadece araçlardır. Daha iyi olmanız için gereken esaslar. MIT'de insanlar python kullanarak algoritmanın temellerini öğrenir. örneğin, Java web programlaması için iyi olabilir. ancak C / C ++, hizmetler ve yüksek performanslı uygulamalar için iyidir. Demek durumlarına bağlı.
"Uygun", "mümkün" anlamına gelirse, evet. Eğer "iyi" ise, kesinlikle hayır.
C ++ 'ı sevmek bile mümkün, ama bunun için birkaç dil öğrenip, on yıl boyunca deniz mavisi çürük kod tabanları ile çalışsanız, "gerçekten işe yaramaz, önemsiz yazılımlar üretme" konusunda deneyim kazanacaksınız - o zaman C ++ çekiciliğe sahip olacak.
Bakire olduğunuzda başlangıçta değil, küçük, basit (ama sözde ilginç ve eğlenceli) problemlerle uğraşın.
Python, ardından SICP (şema) veya benzeri bir şeyle başlardım. Belki ters veya interleaved. Onlarla gidip problemi çözebilirsin. Sistemle savaşmak yerine derin çamurda yürümek ve her türlü mantıksız tuhaflığı ve tarihsel nedenlerini öğrenmek.
Daha sonra, bir kağıt poşetten çıkma yolunuzu zaten programlayabildiğiniz zaman, çıplak metale geçin: montaj yollarını ve çeşitli mimarileri, ayrıca belki de Knuth's Mix'i öğrenin. Sadece hafızayı, kayıtları, ALU'yu, önbellekleri, kesintileri anlamak ve okuma seviyesine ulaşmak için kodları ezberlemek ya da çok gerçek şeyler yapmak istemiyorum.
Daha sonra bu temel ile C ++ dahil diğer dillere maruz kalabilirsiniz. Belki arada bir "dillerin tarihi ve evrimi" eklemek için iyi bir fikir.
Ortaokulda C ++ ile başladım. Bu kitabın bir kopyasını aldım: C ++ Deitel ve Deitel tarafından nasıl programlanır . Bu kitap oldukça iyi.
Açıkçası burada doğru ya da yanlış cevap yok, şahsen C ++ 'in kavranabileceğini gördüm. Her şeyi OOP'a kadar öğrendim (şimdi "nasıl" anlamamıştım ama şimdi nasıl elde edemediğimi anlamıyorum). Dene, cesaretini kırma. Sıkışırsanız, diğer dilleri inceleyin ve yenilerini öğrenmeye devam edin. Fikir aynı şeyi 2-3 farklı biçimde gördüğünüzde onları daha iyi anlayacağınızdır. Dediğim gibi, “bu” işaretçi kavramı kafamı karıştırdı ama Python'da (bunun yerine kendi adıyla) aynı şeyi gördüğümde hemen bana mantıklı geldi çünkü C ++ 'da anladım. Java'yı birçok kolej öğretebilirseniz öğrenirsiniz. Python veya yakut dilini öğrendiğinizden emin olun ve Clojure (ve diğer tüm lisplar), Haskell, Scala ... gibi daha fazla niş / yeni şey keşfedebilirsiniz.
Hayır. Java veya C # ile başlıyorum. C ++ öğrenmek istiyorsanız, sınıf nedir, döngüler ve çatallar (eğer öyleyse ifadeler) vb. Temelleri öğrendikten sonra muhtemelen daha kolay olur. Nasıl bakacağınızı öğrenmek çok daha önemlidir. Bir problem veya matematiksel bir denklem ile programlayın ve tüm hafızanızı ya da her neyse serbest bıraktığınızı çözmekten daha fazlasını programlayın.
Bu sorunun arkasındaki varsayım "C ++ çok karmaşık görünüyor, 16 yaşındaki ilk (bilgisayar programlama) dili olarak seçebilecek mi?" Şeklinde görünüyor.
4 ya da 5 yaşımıza gelince, anadildeki yapıların çoğunu seçiyoruz, sadece başkalarının konuşmasını dinleyerek maruz kaldıkça. Harika cümleler oluşturmak bir yaşam süresi alır, orada soru yok.
C ++, çoğu insan dilden çok daha az karmaşık / karmaşık olduğundan emindir. 16 yaşındakiler onu alabildiğinden emin olmalı. Onunla harika kod yazacaklar mı? Beklemeli ve izlemeliyim.
Yeni başlayanlar önce 'programlama'yı takdir etmelidir. Bir başlangıç sınıfını eğitmedeki deneyimimde ilk önce en çok anladıklarını takdir ettiler. Python ve C # gibi Python'u takdir ediyorlar çünkü Python çok yüksek seviyeli ve C # gibi semboller kullanmıyor, yani insan diline çok yakın bir anlam ifade ediyor. Bu yüzden yüksek seviyeden düşük seviyeye kadar programlama öğrenmenizi tavsiye ederim.