İlk dili C # öğrenmek bir hata mıdır? [kapalı]


26

Burada okuduğum benzer soruların olduğunu biliyorum, ancak geçenlerde Joel Spolsky'nin yazısını okudum:

Programlama deneyimi olmayan parlak bir kişiye nasıl programlanabileceğini nasıl öğretebilirim?

Ve öğrenme yolumu ve uzun vadede gerçekten zararlı olup olmayacağını düşündürdü.

Çeşitli dillerle uğraşıyorum ama C # benim ilk ciddi olanı, "İlk önce C # kafalarını okudum ve birkaç proje yaptım. Ama yukarıdaki yazıyı okuduktan sonra, biraz yanlış olabileceğimi biraz rahatsız edici buldum, açıkçası Joel'in beni biraz neyin attığını düşündüğü fikrine saygı duyuyorum.

Okuma listesinde önerilen "Kod" u okumaya başladım ve keyifli olmasına rağmen oldukça zorlu olduğunu buluyorum. Visual Studio'daki "noobish hack" halimin ışıltısının söndüğünü hissediyorum.

Şimdi hangi yoldan geçmem gerektiğinden emin değilim? Bir adım geri atıp Joel'in tavsiyelerine uyup okumaya başlamalı mıyım?

Sanırım asıl amacım sadece herkes gibi iyi bir programcı olmak, fakat saygı duyduğum birisinin zararlı olduğunu düşündüğü zaman, bir .NET dili öğrenerek kötü uygulamalara girmek istemiyorum.

Düşünceler?


4
CS'yi zor yoldan öğrenmek, ancak iyi bir öğretmeniniz varsa yapılabilir.
İş

5
C # benim ilk dilim değildi VB.net öyleydi ve bunun nasıl başlayacağınız olmadığını söyleyebilirim. Bence C # harika bir başlangıç ​​dili olacak, her zaman kendinize işlerin neden olduğu gibi yapıldığını sormayı unutmayın.
Daniel Little,

23
Hayır. İlk dil olarak herhangi bir dil, bilgisayar bilimleri teorisini öğrenmek için iyidir. Bir kariyer yapmak için bazı dillerin diğerlerinden daha iyi olduğu kabul edilir, ancak öğrenme açısından her şey iyidir. Bildiğim en iyi programcılardan bazıları BASIC ile C64, Apple II veya TI-99 / 4A'da başladı. Beyinlerini çürütmedi, ama onları bir sonraki dile, sonra bir sonraki dile çağırdı.
Jesse C. Dilimleyici

5
Ayrıca, bu bilgi ile ne yapmayı planladığınıza bağlıdır. C # işle ilgili sorunları gün içinde ve çalıştığım yerde çözüyor. C'ye 2 yıldan beri sınırda bakmadım ve mecbur kaldığımda kendimi çok üzülüyorum.
Jesse C. Dilimleyici

19
Bir şey öğrenmek asla bir hata değildir. Her zaman daha iyidir öğrenme değil .
SK-mantığı

Yanıtlar:


80

Çeşitli dillerle uğraştım ama C # ilk ciddi olanı, "İlk önce C # kafalarını okudum ve birkaç proje yaptım. Ama yukarıdaki yazıyı okuduktan sonra, biraz yanlış olabileceğimi biraz rahatsız edici buldum, açıkçası Joel'in beni biraz neyin attığını düşündüğü fikrine saygı duyuyorum.

Joel'in görüşlerine de saygı duyuyorum ama onlar da şudur: görüşler . C # 'yi başlangıç ​​dili olarak kullanmakta kesinlikle yanlış bir şey yoktur.

Size verebileceğim en büyük tavsiye veya herhangi bir programlama yapan herhangi biri (vanilya C'ye başlasalar bile!) Durgun olmamak ve dini olmamaktır . Hangi programlama diliyle başladığınız veya o dilin ne kadar saf ya da doğru olduğu umurumda değil - bu gün ve yaşta, yalnızca programlama dünyasında oturamayacaksınız.

Örneğin, ben gençken PHP3 ile programlama yapmaya başladım. Bazı küçük web uygulamaları ve birkaç web sitesi kurdum; Dahi bir programcı olduğumu ve PHP3 ile her şeyi yapabileceğimi düşündüm ve ASP ya da BASIC ile ilgili insanlar hakkında kaşlarını çattığımı düşündüm . Çocuk, yanılmışım.

Ufkumu genişletmeye ve diğer programlama dillerini ve kavramlarını incelemeye başlayana kadar geliştirici olarak gerçekten çiçek açmaya başlamadım. Lise boyunca biraz RealBASIC ve daha sonra Visual Basic öğrendim. İşletme okulundan sonra profesyonel bir geliştirici olduğumda C # ve Javascript'i ciddi bir şekilde öğrenmeye başladım.

Şimdi, sakın yanlış anlamak burada beni - ben değilim değil sen Tüm Esnaf ve Jack olmaya çalıştıklarını savunan. Kalbinde ve ticarette hala bir PHP programcısıyım. PHP benim ekmeğim ve tereyağım ve içte ve dışta biliyorum. Ancak benim PHP becerilerim sadece PHP yaptıkları gibi olmadı. İşte profesyonelce çalışmama rağmen PHP'den anlamadığım bazı önemli konseptler.

  • Javascript: Kapaklar
  • jQuery (evet, ayrı): DOM ve Ajax
  • Visual Basic: Nesneye yönelik programlama
  • C #: Jenerikler ve kapanışlar
  • Ruby (on Rails): MVC tasarımının gücü

Devam edebilirdim ve bu sitedeki diğerleri de günlerce devam edebilirdi. Bir PHP programcısı olmama rağmen, bu harika kavramları benimle birlikte her gün yaptığım işe geri getirebildim.

Amacım ne? C # öğren. C # ustası ol - uzun, başarılı bir kariyerin olacak ve muhtemelen bazı şaşırtıcı şeyler başaracaksın. Ama yapamaz güvercin delikli kendin. Yolculuk yapın ve diğer dilleri, ortamları ve kavramları tadın.


+1: @toleero - C # veya Java, öğrenmeye başlamak için tamamen iyi. Joel ve Paul Graham Ortalamaları Yenmek, geliştiricilerin seçtikleri dillerle durduğunu, bunun çok yaygın olduğunu belirttiği noktaya gelmeye çalışıyorlardı.
Justin Shield,

Objective-C ayrıca bu arada MVC'yi öğretir, ancak daha az gelenekselleştirilmiştir.
Moshe

4
+1. Bence, diğer dillerle öğrenmeden ve oynamış olmadan, gerçekten mükemmel bir geliştirici ve ana dilinizin ustası olamazsınız. Bilginizi genişletmenin ve ana dilinizin güçlü yönlerini gerçekten takdir etmenin en iyi yolu budur.
Niklas H,

3
+1. Bundan kurtulmanın anahtarı, koyu seçtiği kelimelerdir. Java ve C #, hatta C gibi bir şey öğrenmek ve hayatınızın 10 yılını her zamanki gibi kod yazarak geçirmek çok kolaydır. Kendini zorla, her sene yeni bir dil öğren. Yaptığın şeyleri sorgula, daha iyi bir yol bulmaya çalış. Ve en önemlisi, Programcılar ve StackOverflow ile uğraşın.
Andrew T Finnell

Tüm bu örnekleri C # ile yapabilirsiniz. Dom / ajax: C # xml ve ajax kütüphaneleri. Nesne odaklı? Kontrol. MVC? Asp.net mvc çerçevesi.
Carra

21

Saygı duyduğum birinin, bunun zararlı olduğunu düşündüğü zaman.

Bu bana Richard Feynman'ın katıldığı bir hikayeyi hatırlatıyor. Caltech'te Bir öğrenci "önyargı" karanlık maddeyi oluşturan bir aday olarak parçacığın bir tür lehine içinde ne güzide kozmoloğa Michael Turner istedi ve Feynman tersledi ve Neden bilmek istiyorsun" dedi onun önyargı? Kendi oluşturun! ... Yetkililere dikkat etme, kendin için düşün. "

Programcılar hayatın her kesiminden geliyor. Java bugün birçok lisede ve kolejde öğretiliyor, ancak Joel Spolsky okuldayken bile icat edilmemişti . İyi bir programcı olmak söz konusu olduğunda “tek bir doğru yol” yoktur. SICP gibi çoğu programcının bir noktada karşılaştıkları bazı klasikler var, ancak zor ve hızlı bir standart yok. Önemli olan bir yerden başlamak ve kavramları oluşturmaya odaklanmak. Harika bir programcı bir keresinde şöyle bir şey söyledi:

Kötü programcılar koda odaklanır, iyi programcılar algoritmalara odaklanır.

C # ile başlamak için iyi bir dil olduğunu düşünüyorum ama Visual Studio'ya karşı dikkatli olmanız konusunda sizi uyarıyorum. Bu muazzam bir IDE, ama bir sürüklerseniz DropDownListve bağlama bir GridViewa ObjectDataSourceve bir kullanma Buttonkontrolünü bir hale getirmek için DropDownListesaslı arama, ardından işin çoğunu IDE tarafından yapılır ve gerçekten programlama değiliz. IDE araçlarından yararlanın, ancak her zaman kavramlar oluşturmaya ve bilgi geliştirmeye çalışın.


Harika bir cevap.
Yasir

3
İlk önce “İyi programlayıcılar Algoritmalara odaklanır” diyorsunuz, sonra “iş IDE tarafından gerçekleştiriliyor ve gerçekten programlama yapmıyorsunuz” diyorsunuz. Hangisi? Bir program yazabilirim, iş akışını doğru yapabilirim ve GridView ve DropDown gibi "uygulama detaylarını" umursamıyorum (doğru olanları seçecek kadar bilgim olduğunu ve bunların nasıl doğru uygulanacağını varsayarak). Sorunun geri kalanında +1, ancak IDE kullanmak iyi bir programcı olmanızı engellemez.
WernerCD

@WernerCD - "İş IDE tarafından yapılır" derken, verdiğim belirli örneğe değiniyordum. Hiç kodlama yapmayan ve bir IDE'deki talimatları adım adım izleten bir çocuğu alırsanız, bir çalışma sayfası oluşturacaktır, ancak programlama yapmıyor. IDE'lerin programlama çalışmaları için inanılmaz derecede faydalı olduğunu düşünüyorum, ancak tam bir acemi olarak, kontrolleri sürüklemek yerine özyinelemenin ne olduğunu öğrenmekten daha iyisin.
BlackJack

2
@Graham - Üzgünüm ama aynı fikirde değilim. BT ya da yazılım geliştirmeyi öğrenmeye çalışmıyor - programlamayı öğrenmeye çalışıyor. IDE araçları, benim görüşüme göre, aslında yetkili bir programcı olduktan sonra daha sonra bırakılacaklardır.
BlackJack

16
Anahtar, iyi bir geliştiricinin sihire inanmadığıdır . IDE (veya başka herhangi bir araç) tarafından yapılan çalışma, kolaylık, kısayol, ancak anlayışın yerine geçmez .
Bevan

7

Ben sadece bir gencim, ama son derece daha deneyimli olanlara karşı alçakgönüllülük ve saygıyla, bu tavrı almadığımı da itiraf etmeliyim.

Bir programcı Joel'in cevap aşağıda yorumladı: " son derece kendi C # yetenekleri için önerilen geldi programcılar 'üzerine masanın üzerine başını patlama zorunda olan birisi olarak' ama gibi basit şeyler yapamadık çok iyi belgelenmiş temel sınıf uygulamak, bulmak c ve c ++ programlarında bellek sızıntısı var ... "

Peki neden C ++ uygulamalarında bellek sızıntısı bulmak, C ++ ' ı tanımadığını hiç iddia etmeyen biri için basit olsun ? :) anlamıyorum. Psikoloğun dişçi becerilerinin yetersizliği nedeniyle eleştirilmesi gibi. Mutlaka iyi bir programcı değilim, ama ben C ++ bilmediğimizden bu değil hissetmek - Ben yeterince iyi ben çerçeve ve dilleri bilmiyorum çünkü bu kadar am kullanarak.

"Çok iyi belgelenmiş bir temel sınıf (...) uygulamak veya basitçe kendi başlarına bir sorun bulmak ya da ılımlı bir hızda yeni bir fikir öğrenmek gibi basit şeyler yapamazdım"

Tamam, ama - korelasyon nedensellik anlamına gelmez ve genel programlama becerilerinin eksikliğinden - şüphelendiğim - dil seçiminin bir sonucu olduğunu varsaymamıza neden olan nedir?

Veya bu konuda C # 'nın ilk tercih edilen dili olmasının bir etkisi var mı?

Diğer akla yatkın açıklamalar görebilirsiniz (belki C # sadece moda olduğu ve dolayısıyla bu acemiler bir sürü çekiyor ... çoğu kişi kimin için C # çok uzun programlama olmamıştır ilk dildir hiç olmasını ve daha fazla özürlü içinde taşımaktadır hiçbir zaman başka bir dilde programlama yapma hakkına sahip değildir.


Sadece elektrikli el aletlerini kullanabilen bir marangozu eleştirmek gibi bir şey. Çöp toplayan dillerde bile, değişkenlerinizin ne kadar dayanması gerektiğini bilmek temel bir beceridir. Eğer bir değişkenin kullanım ömrünü freedoğrudan size bakan bir bariyerle tanıyamazsanız, bu ipucunu vermeyen bir dilde yazılmış bir programda nasıl tanıyacaksınız?
Karl Bielefeldt

1
Senin değinmek istediğin noktayı anlıyorum. (Ben günlük olarak C # gerekebilir mümkün olabilecek en fazla: kapsamı, değişkenler ömür boyu çok temellerini bilmek using, IDisposableolay işleyicileri onların dinleyicilerini vb referans), fakat ben bile ciddiye bellek teşhis girişiminde olamazdı C ++ uygulamasında sızıntı var, çünkü sentaksı bile bilmiyorum! Yıldızın ne anlama geldiğini bilmiyorum.
Konrad Morawski

5

Bir dili öğrenmek ve onunla bağlantı kurmak , hangi dilde başlayacağınıza karar vermekten daha fazla bir hata. Elbette daha kolay öğrenebileceğiniz bazı diller var, ancak çok fazla kullanacağınızı öğrenmeye başlamak ve öğrenmeye başlamak daha iyidir (dil seçimini okul tarafından yapılmış bir okulda). Bir dili düzgün bir şekilde öğrendikten ve birkaç ay sonra aktif olarak kullandıktan sonra, başka bir programlama diliyle başa çıkmalı ve karşılaştırmalısınız.

.NET'te, Visual Basic ile C # arasında geçiş yapabileceğiniz için iki ( sıralama ) farklı programlama diliyle gitmeniz kolaydır . Böylece Visual Basic'i öğrenebilir ve farklılıkların ne olduğunu görebilirsiniz. Bu seviyede, üç temel programlama yapısına sahip temel prosedürel kodlama konusunda uzman olmalısınız, eğer hepsiyle yaratıcı olabilirseniz (ve değişkenleri nasıl kullanacağınızı biliyorsanız), o zaman mükemmel bir programcı olma yolundasınız:

  • Sıra - Kod, birbirinizi belirlediğiniz şekilde izleyen adımların sırasına göre yazılır (bir "atlama", adım adım ve başa başlıkları tanımlar)
  • Koşullu - Kodun karar noktaları olabilir (if-ifadeleri, switch-case ifadelerini tanımlar).
  • Döngü / Tekrarlama - Bazı kararlar verildiğinde kod tekrar edebilir (bu, her ikisinin de bir uzantısıdır, for-while-loop'ları tanımlar)

İkincil programlama dilinizin sizin için en aktif olup olmayacağı önemli değildir, sadece programlama dillerinin (özellikle de aynı paradigmayı takip ediyorlarsa) birbirlerine çok benzer olduğunu bilmek ve aslında küçük bir nüanslar vardır. Yazılım programlamanın nasıl çalıştığını anlamanızı sağlamak için.

Bundan, yılda en az bir kez, başka bir programlama paradigmasını izleyen yeni bir programlama dili öğrenmeye çalışın . Yeni dili tamamen takip etmenize gerek yok, ancak diğer paradigmaları bilmenin bazı yararları var. Birkaç paradigma vardır ve bazı programlama dilleri birçokları arasında karışır (C # 'nın aslında şu üç altkümeye sahip olduğunu unutmayın):

Birçok programlama dilinin kendi deyimleri ve temel API'sini takip ettiğini öğrenmeniz gereken en önemli şeyler. Bu nedenle, yeni bir dil öğrenirken, bu deyimleri ve API'leri iyi öğrenmeye çalışın ve bir şeyler oluştururken iyi olacaksınız. Bunun iyi bir nedeni, programlama problemlerini tasarlama ve çözme konusunda daha iyi olmanızdır. Bir dilin içindeki bir deyim, ana dilinizde bir problemin nasıl çözüleceği hakkında size biraz fikir verebilir.

Ayrıca, en çok kullandığınız ana dil dışındaki diğer programlama dillerini öğrenmeniz için çok iyi bir neden daha olduğunu da bilin: İş bulma şansınız çok daha fazla.


5

Sorunuzun odak noktası ve buradaki cevapların çoğu C # ile ilgilidir. Gönderen Vikipedi :

C # dilinin basit, modern, genel amaçlı, nesne yönelimli bir programlama dili olması amaçlanmıştır.

Buna dayanarak, beyninize uzun süreli hasar vermeden C # 'yı ilk dil olarak öğrenebileceğinizi söylemek güvenli görünüyor. Ben ne zaman Joel olsa da, tüm dil kınayan olduğunu sanmıyorum yazdı :

Kısayol almaya ve doğrudan şimdi öğrenmek istediğiniz şeyi (C # ve ASP.NET ile başlayan gibi) öğrenmeye doğrudan gitmeye çalışır.

Sorun dil değil, kısayollar alıyor. Sık sık, insanlar adım adım öğreticileri izleyerek ya da "24 saat içinde her şeyi öğren" kitaplarını kullanarak hedeflerine hızlı bir şekilde gitmeye çalışırlar. Satırları boyunca çok fazla soru olduğunu fark etmeden önce Stack Overflow'ta çok fazla zaman harcamanıza gerek yok: "Hayatımda hiçbir zaman bir kod satırı yazmadım, ancak iPhone'a giriyorum Programlama! Birisi lütfen tam olarak ne yapmak istediğimi yapmak için bana adım adım talimat verebilir mi? Teşekkürler! " Bu yaklaşımı uyguladığınızı söylemiyorum, ama buna karşı korumanız gereken bir şey var.

Eğer sağlam programlama becerileri geliştirmek istiyorsanız, temel becerileri öğrenerek başlamalısınız. Doğrudan OOP ve GUI uygulamalarına geçmeye çalışırsanız, bu temelleri kaçıracaksınız. Joel'in işaret ettiği kitaplar gerçekten çok iyi. Sadece C # Yellow Book (PDF) sayfasını inceledim, ancak muhtemelen mağazalarda gördüğüm C # kitapların çoğundan daha iyi bir programlama intro olarak görünüyor.


Cümlenin "C # öğrenme" olmadığını, "C # ve ASP.NET" olduğunu vurgulamak isterim (vurgu eklenmiştir). C # programcısı değilim, ancak .NET ve CLR öğrenmeye başlamak için iyi bir platform.
öğleden sonra

5

Bana göre, o diğer makaledeki şeyler elitist bir piç kurusu olmaktan alıkoydu. Evet, SICP'yi gerçekten daha iyi olmak isteyen ciddi geliştiricilere sık sık tavsiye ediyorum , ancak yalnızca "norm" un ötesine geçmek ve derin sihri öğrenmek isteyenler için öneriyorum . Nitekim, yıllarca SICP standart MIT birinci sınıf programlama metni idi; Ancak, pek çok sağlam çalışan programcı, bu iyi fakat pahalı ve oldukça seçici bir kuruma katılma fırsatını bulamadı.

Yani ne yapmak senin sorunun cevabı, tavsiye? Sahip olduğunuz şeyle başlayın ve sadece belirli bir dili öğrenmek yerine, nasıl bir programcı gibi düşüneceğinizi öğrenin.

C # uygulamasına sahipseniz, benim gibi çalışan bir iş için mükemmel bir dil olduğunu söyleyebilirim - Java, JavaScript, Python, Ruby, Scala, Scheme ve diğer birçok dilde olduğu gibi yıllar boyunca öğrenilmiş. Sonunda, eldeki belirli iş için doğru dilleri ve araçları seçmeye çalışıyorum, bu da şapka gibi dilleri değiştirmek anlamına geliyor.

Böyle yoluyla Ruby yaklaşan olarak öğrenmek için eğlenceli yollar kullanılarak ile yanlış bir şey yoktur yüzden Poignant Kılavuzu ve Ayakkabı (ı tavsiye gibi başka son mesaja ). Böyle kafa vurarak olarak gizli ve mistik yolları vardır The Little Schemer'da ve Deneyimli Schemer'da için yolda SICP . Birçok modern düşünür, o kadar eski akademik ve "girişimci" şeyleri atlayıp, doğrudan JavaScript, JQuery ve HTML5'e dalmanızı sağlardı. Başlamanın birçok yolu var, bu yüzden çok fazla zaman kaybetmeyin. Sadece bir tane seç ve kod yaz!

Gerçekçi olarak, bugünlerde az sayıda çalışan profesyonelin önce Assembler veya C / C ++ öğrenmek için sizi geri göndereceğine inanıyorum. Açıkçası, onlar yaptılarsa, size çok fazla hizmet vereceklerine inanmıyorum.

Bu yüzden, biraz "süslemek için sahip olduklarınızla" süslemek için üç tavsiyem daha var:

  • Size havalı görünen bir programlama dili ve mantıklı görünecek bir öğrenme yaklaşımı ve hepsine bir şey verin. Seçtiğiniz dilde okuryazar olun; yönetebildiğiniz kadar iyi kod okuyun!
  • Ellerinizi hemen klavyenizden alın ve öğrenirken kodlamaya başlayın. Programlama kitaplarınızdaki tüm temel alıştırmaları kendiniz yapın ve gerçekten çalışmasını sağlamak için parmaklarınızla bulabileceğiniz tüm öğreticileri pratik bir şekilde uygulayın. Demolarda çalışma kodu olması gereken ancak düzeltilmeyen hataları düzeltirken ne kadar beceri kazanacağınıza şaşıracaksınız!
  • Çabalarınızın çoğunu, programcıların sorunlarla nasıl başa çıkacaklarını iyi düşündüklerini öğrenmek için harcayın. Karmaşık problemleri ve sistemleri nasıl analiz edeceğinizi ve ayrıştıracağınızı, onları gerçekten anlayana dek nasıl parçalayacağınızı öğrenin. Ardından, bu gezegendeki bazı insanlar için bazı işleri daha kolay hale getirecek şekilde onları inşa ederek otomatik çözümler üretmeyi ve tasarlamayı öğrenin.

FORTRAN IV ve QBASIC ile başladım ve eğer bunlar beni mahvetmediyse, C # size de zarar vermez! İyi şanslar ve öğrenirken eğlendiğinizden emin olun!


Abelson ve Sussman'ın orjinal derslerini burada bulabilirsiniz: groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures
BlackJack

4

Sanırım insanlara "Hangi dili öğrenmeliyim?" Diye sorduğum en iyi tavsiyem. basitçe: iyi bir programcı herhangi bir dilde çalışabilir.

Eminim ki bu ifadeye karşı argümanlar var, ama mesele şu: öncelikle bir dil uzmanı yerine iyi bir programcı olmayı öğrenin. İnşaatçılar, tam olarak tek bir arsa üzerine inşa etmek konusunda uzmanlaşmaz, ticaretinin becerilerini öğrenir ve ihtiyaç duydukları arazi arsasına uygular.


Bunu + 1'leyeceğim. Her zamanki bina motosikletlerine benzetmemle aynı. Montaj hattında çalışarak ve kitabı izleyerek iyi bir motosiklet inşa edebilirsiniz, ancak gerçekten harika inşaatçılar bisikletin içini dışına bilen helikoptercilerdir ve sonuç olarak harika şeyler elde edersiniz.
Jarrod Nettles

3

Bazen, tercih edilen dillerin kişiliklerimizle daha fazla ilgisi olduğundan şüpheliyim. Kablolu olma şeklimiz ve kabul etmek istediklerimizden daha pratik veya akademik düşüncelerle daha az ilgililer.

Bununla birlikte, yeni şeyler öğrenmek hiçbir zaman zararlı değildir. Her şeyin bir el kitabının olduğunu fark etmeye başladığınızda, eşiği evrilmiş veya belki de kırılmış bir beyne (sanırım perspektif meselesi) doğru geçtiğinizi anlayacaksınız. Sonunda, gerçekten bir yeteneğiniz varsa ve aslında bir programcının özelliği yerine yapmakla ilgileniyorsanız, istediğiniz her şeyi yapabilirsiniz.

En azından Python ve JavaScript ile uğraşmak. Gerçekten sadece kod yazabilmek ve IDLE gibi bir dosya giriş / çıkışıyla erişilebilir bir konsol ortamında veya bir tarayıcı gibi bir sanal ortamda çalıştırılmasını izlemek gerçekten kesin bir öğrenme avantajı. C # ve Java ile ilgili sevmediğim şey, akranlarınızı veya aşırı kısıtlayıcı bir derleyiciyi mutlu etmek için etrafındaki anlamsız sarmalayıcılarla basit bir işlev yazıyor olsanız bile, her şeyin sınıflarla sınırlı olmasını istemeleridir. JS ve Python hakkında sevdiğim bir diğer şey de, kendi paradigmanızı belirlemenize gerçekten izin vermeleri. Birçok geliştirici tercihleri ​​tarafından biraz fazla esnek. Temel operatörleri aşırı yüklemenin bilgeliği hakkında ne düşüneceğimi hala bilmiyorum ama seçeneğe izin verdiği için Python'u sevdiğime eminim.

Ayrıca, en fazla iş ilanıyla ana dili seçmenin acımasız yalanına da düşmeyin. Orta dereceli sularda, istediğiniz işi yapan, her iş arama işlemini bir eşleştirme işleminden daha fazla bir çekilişe dönüştüren, çoğunlukla berbat bir balık sürüsünün bir üyesinden daha büyük bir balık olmak daha iyidir.


Gündelik işimdeki yemez balıktan oluşan bir ordudan birini işe alan biri olarak, aynı fikirdeyim. Bu tartışmada çok yararlı geri bildirimler var; Umarım @ toleero onu yararlı bulur ve bulaşıkları kirmaz. Aklımda, Joel bir dahi olsa da, birilerinin Müjde olarak söylediği her şeyi asla kabul etmemeliyiz . Önerdiği kitaplar faydalıdır. Ancak günden güne kodlama ve pratik tecrübe kazanmak da öyle. Bunu bir avuç dilde yapın (C # ve daha az C benzeri bir şey söyleyin - temel, belki veya Python veya Ruby) ve orada en az bir kişi kadar iyi bir geliştirici olacaksınız: o)
Owen Blacker

3

C #, Java kadar önemli bir esneme kadar kötü değil. İşlevsel programlama, genel programlama, deterministik imha ve değer tipleri, operatör aşırı yüklenmesi vb. Birçok kavramı daha iyi destekliyorlar. Bu özellikler için destekleri elbette hala çok fazla iş kullanabiliyordu, ancak Java'dan çok daha iyi, tabii ki C ++ değil.

İkincisi, Joel'in söylediklerini yanlış okuduğunu düşünüyorum. Eğer varsa olabilir işaretçiler ve özyinelemeye usta, o zaman şimdi Kullandığınız dili önemli değildir. En önemli şey, küçük bir unsafekod kullanmak , onunla unsafe quicksortya da bir şeyle uğraşmak ve sonra normal C # 'nın geri kalanına geri dönmek olacaktır.

Oh, ve okumaya başla :)


2

Benim için verimli olan ilk dil C # idi. Her ne kadar okul zamanında Foxpro ve biraz da C üniversitesinde kandırdım. C # herkes için oldukça iyi ve çok güzel bir başlangıç ​​noktası. Kullanıp kullanmasanız da, her zaman öğrenmesi gerektiğine inandığım güçlü yazma, kapsülleme, kalıtım vb. Gibi programlamanın genel temellerini takip eder. Daha sonra, temel programlamanın standardizasyonunu takip etmeyen Python gibi diğer dillere her zaman geçebilirsiniz.

İnsanların C # öğrenme yönüne gerçekten eklemediği bir diğer faktör, gördüğüm herhangi bir dil için en iyi IDE'nin mevcudiyetidir. Eclipse IDE de iyidir, ancak Visual Studio'yu kullandığınızda microsoft'a teşekkür edeceksiniz.

C # C üzerinden geliştirildi, önceden başka dilleri öğrenmenize gerek kalmamasını sağlar. On yıl boyunca tüm diller C'nin, hatta JAVA'nın doğasından gelişti.

Sonuç olarak, C # size gelecekte başka dilleri hızlıca öğrenme imkanı sağlayan harika bir başlangıç ​​noktasıdır.


Eclipse benim için Visual Studio'dan çok daha iyi. Ama seninle aynı fikirdeyim - C # harika bir dil olurdu, özellikle de ait değilse ve kötü özel mülk standartlarına sahip olan ve Redmond'un karanlık ağarısına hapsolmasaydı .
Thomas W,

2

İlk dil olarak C # öğrenmek, er ya da geç devam edip ikinci bir dil öğrenmeye başladığınız sürece hata değildir. Bu çok daha önemli. İkinci dil C # 'dan biraz farklı olsa bile daha iyi (javascript veya ruby ​​bu açıdan daha iyi olacaktır). Her dilin avantajları ve dezavantajları vardır ve sizi uzun vadede daha iyi bir programcı yapacak farklılıklar.


1

Pek çok dil öğrenmenizi önerdiğim kadar (diğerleri önerdiği gibi), çok iyi öğrendiğiniz bir (birkaç) dili bildiğinizden emin olun .

Birçok dili tanıma riski, bir problemi çözmek istediğinde, tamamen hayal kırıklığına neden olan bir dili asla öğrenemeyeceğinizdir.

For-loop yapılarını bilmek birçok dilde eğlencelidir ancak bunların hiçbirinde nasıl hata yapılacağını bilmiyorsanız işe yaramaz.


1

Öncelikle C # öğrendiğin için endişelenme. İlk adımınızın sol ayağınızla veya sağ ayağınızla atılmasından endişe duymaya benzer. Önce yönetilen bir dil öğrenmek arasındaki tek fark, sadece işaretçiler ve ayrıntılı bellek yönetimi öğrenmek zorunda olduğunuzda ertelemenizdir. Bu aslında sizin lehinize işe yarayabilir, çünkü C'yi öğrenme zamanı geldiğinde endişeleneceğiniz tek şey bellek yönetimidir - kontrol yapılarını, fonksiyon kavramlarını vb. Öğrenmeye çalışırken hokkabazlık yapmayacaksınız. Tamamen işaretçilere ve bellek yönetimine konsantre olabilir.

Basmakalıp var, çünkü o ikinci kısmı asla yapmamış ve C ve C ++ 'ı öğrenmiş ve daha sonra C ve C ++ işlerine uygulanmış yönetilmiş dil programcıları var.

Bir müzik aleti öğrenmek gibi bir şey - birincisi zor, çünkü yazılı müziği okuma mekaniğini ve bir enstrümanı istediğiniz şeyi yapmak için eklemleme fiziksel mekaniğini öğrenmeye çalışıyorsunuz. Öğrendiğiniz ikinci ve sonraki enstrümanlar için, yalnızca bu enstrümanı zaten bildiklerinizden farklı kılan şeylere odaklanabilirsiniz.


1

Hiç şüphesiz acemi için zor. Vb, javascript, PL / SQL, T-SQL, Uniface ve birkaç C # bitmiş bir kaç isim yaptım.

Daha önce birileri, Visual Basic'i nesne yönelimli programlama hakkında öğrendikleri ve dürüst olmaktan bahsettiğinden bahsetti. En iyi özellik, anahtar kelimelerin yakından açıklanan kavramlarla eşleşmesidir.

örneğin, İşlev myHandler (), myButton.click işlevini kullanır.

veya Sınıf İnsanı Uzatır memeli intelligentLifeform uygular

Cidden, bir acemi olduğunuzda okunabilirlik için başka bir sözdiziminin nasıl görünmesini istersiniz?

Özellikler ve yöntemler ararken (ve alt ve işlevler arasında ayrım yaparken) VB'de okunması çok daha kolaydır.

Benzer şekilde değişkenleri bildirirken

Dim myString As string - tür olan ve örnek olan açık

C # case duyarlılığı benim için neyin ciddi bir kötü alışkanlık olduğunu teşvik ediyor - sınıf ve örnek için biri büyük harf diğeri ile aynı ada sahip olmak.

Örneğin

İnsan insan

  • var olan volcabulary'de var olanları büyük harfle tekrar kullanmak zorunda kaldığınız kadar az kelime var mı?

human.think'i çağırırsanız, bir sınıf için bir örneği yanlışlamak ve bir bakışta statik bir yöntem çağırdığınızı düşünmek kolay olacaktır. Ve bakış açısı çoğu zaman kodu nasıl algıladığımızdır, editörün bize neler olduğunu bildirmesini sağlamak için her bir öğenin üzerinde fare kullanmak için vaktimiz yoktur.

C # bazı avantajlara sahip olabilir, ancak yazmaya başlaması çok daha zordur - yazmaya devam etse bile. Bu yüzden her iki dil için de kesinlikle bir yer bulunmalı.


İnsan insan için +1. Var olan kodla ilgili derin bir deneyime sahip olmak yerine, bir kitap aracılığıyla ikinci bir dil olarak c # (ekmek ve tereyağı = Delphi) olması, beynimin bunu biraz görmesini sağlar. Dilin gerçekten hoşuma gittiği kısımları olmasına rağmen, C'den büyük / küçük harf duyarlılığına geçmek, büyük bir hataydı IMHO.
Matt Allwood

Tabii, çünkü Dim myHuman as Humançok daha iyi mi? : D
scrwtp

0

Görebildiğim en büyük dezavantajı, Visual Studio ve ilgili araçların çok, çok güzel olduğu - intellisense ve kod tamamlama gibi şeyler kolayca koltuk değneği haline gelebiliyor. Genelde çevrenin o kadar güzel ve destekleyici olabileceğini savunurum, bir metin editöründe yakut kodunu kırmaya ihtiyacınız olduğunda, kendinizi biraz kaybolmuş hissetme eğilimindesiniz. Oh, ve genellikle linq gibi şeyleri de özlersiniz.


0

Programlamaya başlamak için C # gayet iyi.

Başka bir şeyle uğraşma şansına bile sahip olmadan başlamam söylenmişti (Java'daki Hello World dışında, bazı temel LOGO şeyler ve Scratch'ta bazı şeyler, ancak "Ciddi" değil).

Genel olarak, zor olabilir - sezgisel görünmeyen pek çok şey var ve bunun sınırlamaları var, ama bence iyi kodlamayı teşvik ediyor ve siz onu bir kez aldığınızda harika. Demek istediğim, size daha fazla güç verir ve Python'dan (ki bu genellikle önerilir) biraz daha profesyoneldir ve bu bir fark yaratır. Bu, C # dan sonra C ++ 'ı denemek çok acı verici değildi, ama Python ile başlamış olsaydım, Gerçekten, sadece sözdizimi düzeyinde bile, çok büyük bir engel olurdu.

Ayrıca, Mono şeklinde iyi bir çapraz platform desteğine sahiptir (Mono'nun çok önemli olmadığını düşündüğünüz için - Unity Oyun Motoru bunun bir versiyonunu kodlamanızı sağlar). Ayrıca oyun komut dosyası, web tasarımı veya Windows Uygulamaları olsun, pek çok şey için oldukça faydalıdır. Elbette, bazı diller belirli satırlar için daha iyi olacaktır, bu yüzden hangi genel yöne gitmeyi planladığınıza bağlı olacaktır - örneğin, web yönüne gidiyorsanız, C # (ASP.NET) kesinlikle bir İyi bir fikir. Oyunlara girmeyi planlıyorsanız, bunun yerine C ++ hakkında düşünmelisiniz.

Sonunda, Python'un basitliği veya Java'nın arkaik doğası lehine kullanmasanız bile (Java'nın yayın çevrimi GERÇEKTEN yavaştır) - iyi kodlamayı öğrenirseniz, öğrenmeye değer Bir aceminin öğrenmesi için çok karmaşık olmamakla birlikte,


Bu yazı okumak oldukça zordur (metin duvarı). Sakıncası var düzenleyebilir daha iyi bir şekle ing?
tatarcık

1
Bu nasıl? Hala okumak zor mu, yoksa şimdi mi? Başınız için teşekkürler.
Sbspider

-1

Programcı olmak için tutku duymanız gerekir. Tanıdığım programcılar, endüstri değişikliklerini öğrenme ve fark etme yollarından geçenler. Programlamamı bir Commodore Vic 20 (Evet, o kadar eski) üzerinde başladım ve diğer yeni dillere geçtim. Programlama yıllarımın bir kısmı COBOL bile içeriyordu. Ayrıca bazı dillerin, diğerlerine karşı belirli süreçlerde en iyi şekilde çalıştığını fark etmeye başladım. Size tavsiyem, herhangi bir dili öğrenmek ve döngüler, yöntemler, karşılaştırmalar gibi temel programlama kavramlarını anlamaktır. Çoğu dil bu üç kavramı desteklemektedir. Asla "Bu en iyi yol" değil, "Bunu nasıl geliştirebilirim" dememelisin. Son cümle ile ilgili en kötü şey, kendini mühendislik yüzünden yakalayabilmen. Programlama eğlenceli, eğlenceli hale getirin! İnternet, programlama deneyimi için yepyeni bir yol açtı, çünkü bugün bilgiye ihtiyacımız olan erişim seviyesi şaşırtıcı. İnternetten önce benim için rafa gidip GREY IBM programlama kitaplarını aşağı çekip öğrenmek zorunda kaldım. Bugün google ve whammo'ya basit bir şeyler yazabilirsiniz.


2
Bu yazı okumak oldukça zordur (metin duvarı). Sakıncası var düzenleyebilir daha iyi bir şekle ing?
gnat

-3

Bir sürü cevap vay. İşte benim bakış açım:

C #, bilgisayar bilimlerini öğrenecek bir yer değil. Son derece kötü bir fikir olarak görüyorum. Endişelerimin bazılarını aşağıda listeleyeceğim.

  • C # bir Microsoft dilidir. Burada MS'i yargıladığımdan değil, sadece MS dünyasının dışında çok az alım var. Eğer sadece MS donanımını programlamak istiyorsanız, devam edin ama bunu bilgisayar bilimine sağlam bir yaklaşım olarak görmüyorum.
  • Yönetilen dillerle program yapmayı öğrenmenin büyük bir hayranı değilim. Program hafızasının nasıl yönetileceğini ve veri yapılarının inşasını öğrenmede değer olduğuna inanıyorum.

Devam etmek için çok yorgunum, o kadar çabuk başka bir dil seç.


Kendinizi MS'e bağlamanın kariyeriniz için kötü olacağını düşünürseniz anlayabilirim. Fakat bunun bilgisayar bilimi öğrenmekle ne ilgisi var? CS'nin platformlarla veya şirketlerle hiçbir ilgisi yok.
svick

-3

C # ya da bu üç şeyi özünde sunan herhangi bir dili öneririm:

Tamamen yazılan Derlenmiş ve tamamen nesne yönelimli ..

Bu üç çekirdeği sunan ilk dil, program akışı, sözdizimi ve problemin daha yapısal bir şekilde nasıl çözüleceği hakkında çok şey öğretecektir. Bu özelliklere sahip olmayan birçok harika dilin içinde yaşıyorum ve nefes alıyorum ama eğer birine bir dil öğretiyor olsaydım, bu üç şartı olan birini seçerdim.


-6

Hayır, bu cevap korkunç. Niye ya? Pekala, okumanız gereken bazı iyi kitapları yazıyor, ancak sınıf çalışması ve laboratuvar (bilgisayar laboratuarı) çalışması olmadan kaybolacak ve hüsrana uğrayacaksınız. Deney yaparken bir sürü yeni programlayıcıyla birlikte olmanız gerekiyor, çünkü bu kitaplarda olanlar dışında öğrenecek çok şey var. Bir BSCS'ye gitmeniz gerektiğini söylemiyorum, ancak derleyici sorunları, derleme ortamları gibi herhangi bir anda bir şeyler ters gidebildiğinde bilgili bir eğitmene erişiminiz olması gerekir. Vakumda çalışan bir programcı olmayacaksınız. Kurslarınızın ihtiyaç duyduğu kitap ne olursa olsun, yarı yarıya iyi bir okul seçtiğiniz sürece yeterli olacaktır.

Yani, bazı sınıflar için kayıt olun ve çok daha eğlenceli olacak! Ayrıca, programcı olarak bir iş bulmayı planlıyorsanız, bağlantıya ihtiyacınız vardır ve kampüste işe giren şirketler ile ilgili tüm vızıltıları duyarsınız.

Son olarak, örgün eğitim çok önemlidir, çünkü programlama, işlerin her seviyede (hw / sw) nasıl çalışması gerektiğini anlamak için birçok teorik bilgi gerektirir, böylece işleri nasıl düzelteceğinizi çözebilirsiniz. Neredeyse her şey kara bir kutu, bu yüzden bir şeyin neden böyle davrandığını anlayabilmelisin ki karanlıkta bir sonraki mantıksal bıçağı alabileceksin. En az 2 yıllık bir programlama derecesi olmadan (buna ne diyorsanız) dezavantajlı olacaksınız.

PS Java'yı deneyimleyinceye kadar .NET veya C # 'ye yaklaşmazdım. C # göze hoş gelmiyor. Dağınık ve dağınık görünümlü bir kod. Net IDE inancının ötesinde berbat. IDE standartlarının karanlık çağlarında. Java: C # ~ Veri: Lore


10
Son paragrafa kadar seninleyim. C # estetiği hakkındaki görüşünüzü, iltihaplı bir şekilde, aksi halde iyi bir cevaba ait görünmeyecek şekilde belirtir.
Adam Lear

9
Son paragraftan önce bile, bu çoğunlukla saçmalıktır. Bazı insanlar bir sınıf odası ortamında iyi öğreniyorlar - ama diğerleri için bu çok zaman kaybı. Teorik arka planı öğrenmek önemlidir, ancak bu zorunlu olarak bir sınıf veya örgün eğitim de gerektirmez - bazı insanlara yardım eder, ancak herkese (hatta yakınına) değil.
Jerry Coffin

Bir görüş tam da böyle; bu bir gerçek ifadesi değil. Yani, kırgın hissetme.
Tom Jones

Resmi eğitim önerisini yanlış anladınız. Soru sormak ve laboratuarda meslektaşlarınızla işbirliği yapmak için bir yere ihtiyacınız var. İşbirliği anahtar kavramdır. Üzgünüm, eğer bir C # kullanıcısıysanız ve bu hoşnutsuz teknolojiler arasında imkansız olsa da sizi rahatsız ettim.
Tom Jones

1
Stackoverflow, üniversiteye gidemeyen ancak topluluk desteği isteyen birçok insan için bu "laboratuvar" haline geldi. Bir sınıfla aynı mıdır? Tabii ki değil. Yeterince iyi mi? Emin ol.
BlackJack
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.