Benim için ben C # ve Java kişiyim. Bu 2 dilin oldukça benzer olduğunu düşünüyorum, bu yüzden birbirlerine geçmem daha kolay. Başka dilleri seçmenin iyi bir fikir olup olmadığından emin değilim. Düşüncesi olan var mı?
Benim için ben C # ve Java kişiyim. Bu 2 dilin oldukça benzer olduğunu düşünüyorum, bu yüzden birbirlerine geçmem daha kolay. Başka dilleri seçmenin iyi bir fikir olup olmadığından emin değilim. Düşüncesi olan var mı?
Yanıtlar:
Bir dil öğrenmek için en az beş neden düşünebiliyorum ve sonuçta bunların her biri için bir tane öğrenmelisiniz.
Kaç dil öğrendiğinle ilgili değil. Yeni kavramlar öğrenmekle ilgili. Bazı diller size birçok kavramı öğretebilir, bazıları ise sadece bir tanesini öğretebilir.
C # biliyorsanız, muhtemelen Java'yı öğrenerek çok yeni bir şey öğrenemezsiniz. Ama Haskell'i öğrenseydin yapardın.
Öğrenmek için yeni bir dil seçtiğinizde, bilmediğiniz kavramları size öğretecek bir şey seçin.
En önemli şeyin hızlı öğrenme yeteneği olduğunu söyleyebilirim. Bu, farklı amaçlar için kullanılan farklı dilleri bilmenin önemli olduğunu söyledi. Örneğin biliyorum:
1) Betik dilleri kategorisi için Python ve Perl
2) "++" çerçevesi olarak C ++
3) Mobil uygulama için Java
4) Büyük miktarda eski kod için C
5) Küçükken bildiğim bazı eski diller (Temel, Pascal, Clipper vb.)
En azından bir ana dile ve bir betik yazısına ihtiyacınız olduğunu söyleyebilirim . C # bilmek bir sonraki Python veya Perl veya Ruby öğrenmeniz gerektiğini söyleyebilirim. (Python ile giderdim ama bu sadece bir tercih meselesi).
Her yıl yeni bir programlama dili öğrenmek iyidir. Ancak, zaten bildiklerinize benzer bir şey öğrenmek yerine, Scala veya F # gibi kökten farklı bir şey öğrenmenizi tavsiye edeceğim. Size bir şeyler yapmanın ve sonunda programlama becerilerinizi zenginleştirmenin yeni yollarını gösterecektir.
İhtiyacınız olan dillere odaklanmalı ve yaptığınız şey için kullanmalısınız . Gerçekten bir dil öğrenmek pratikten gelir, böylece pratik yaparken o dilin avantajını elde edersiniz. Boş zamanlarınızda yeni bir dil öğrenecekseniz, onu karmaşıklığı arttırma görevlerinde uygulayarak yapın, böylece onu gerçekten ele alabilirsiniz.
hiçbirine odaklan. temiz kod öğrenmeye ve yazmaya odaklanın; Açık, anlamlı, basit ve en önemlisi kopyalanmamıştır.
bu programlama tipinin prensiplerini araştırın, temeller (örneğin, OOP için kapsülleme; ne anlama gelir ve ne ifade eder) ve bazı prensipleri öğrenin.
bu şey işinizi kolaylaştıracak. bu, sizinle birlikte veya kendinizden sonra çalışan kişiler için daha kolay hale getirecektir.
ya sentaksıyı da iyi bilmek zorundasın. ama bu senin odağını uzun süre alan bir şey değil
ve ya, kullandığınız teknolojileri de oldukça iyi anlamalısınız. ancak bunlar, işinizin gerektirdiği karmaşıklık seviyesine göre önceliklendirilebilir.
Son ikisi ana odak değil, bazı odak
Bir programcının , belirli bir dilde / dillerde değil, programlama üzerine yoğunlaşması gerekir .
İşinizi yapmak için gereken kadar.
Ancak C # ve Java, İngiltere İngilizcesi ve ABD İngilizcesi kadar yakındır. Fince veya Navajo'ya giderek yeni bir şeyler öğrenebilirsiniz .
Başka bir dili bu dili "dışarıdan" olduğu gibi görmek için yeterli derecede anlamadan bir diline hakim olabileceğinizi sanmıyorum. Her farklı dil masaya başka bir şey getirir ve getirdikleri kavramlar birlikte çalıştığınız ana dillere geri dönebileceğiniz şeylerdir.
Bu yüzden, başka dilleri kullanmayı öğrenmek için harcanan zaman, onları ticari olarak kullanmayı düşünmüyorsanız bile asla boşa harcanmaz.
Eski atasözü her yıl bir dil öğrenmek ve kesinlikle ilk on yıl için şunu söylemeliyim ki bunu yapmanız gerekiyor. Belki de bunun ötesinde, daha önceden bildiklerinizin bazılarını daha derinlemesine keşfetmek (belki birkaç yıl önce öğrendiklerinizin bilgilerinizi güncellemek) veya sadece yeni diller biriktirmek yerine belirli kütüphanelerle çalışmak arasında seçim yapabilirsiniz farklı dillerle çalışarak programlama pratiğini araştırmak, bir programcı olarak gelişiminize kesinlikle yardımcı olacaktır.
C # ve Java gibi popüler programlama dilleri çoğu yerde kazançlı çalışmanızı sağlar, ancak problem çözmenin yeni yollarını öğrenmek için birbirinizden yeterince farklı değildir. Bence yediğiniz bazı dilleri (işinizi yapmak için kullandıklarınızı) ve birlikte oynadıklarını düşünüyorum. Her ikisinin de amaçları var.
Yeni programlama dilleri öğrenerek, sorunları çözmenin yeni ve daha zarif yollarını da öğrendim. Bu, dillerin sayısı ya da ne sıklıkta aldığınızla ilgili değil. Öğrenmeye değer her bir programlama dili, sizi sorunlarınıza yeni bir zihniyetle yaklaşmaya zorlayan benzersiz bir bakış açısına sahiptir. Çoğu zaman bu değer zihniyeti öğrenmekten gelir.
Smalltalk ile oynadım ve çok hoşuma gitti. Dil, birlikte geliştirmek için bir zevkti. Deyimlerinize alışınca, kodunuzla daha anlamlı olmanıza yardımcı oldular. Java / C ++ / C # ile yazdığınız statik yazmayı hiç özlemedim. Statik olarak yazılan dillerimizde yaşadığımız jenerikler, statik yazım kurallarının sınırlamaları etrafında çalışmak için gerçekten inşa edilmiştir.
Şu anda işleri yapmak için olmasa da, Ruby ve Ruby on Rails'i düzenli kullanıyorum. Ruby'nin tasarım ilkesi “programcı mutluluğunu arttırmaktı”. Bu duyguyu sevmek zorundasın ve bunun çoğunlukla sağladığını düşünüyorum.
Sonunda Java lisp ve Smalltalk yollarına gidecektir ve C # davanın izini sürecektir. Onların yerini almak için orada olacaklar görülmeye devam ediyor. Günün sonunda, eğer problemleri nasıl çözeceğinizi biliyorsanız ve problemi dilimlemek ve kesmek için birkaç yolunuz varsa, bir iş bulabilir ve ihtiyaç duyduğunuz dili ne olursa olsun seçebileceksiniz.
Becerileri güncel ve esnek tutmaya gelince, en az bir tane tamamen yeni bir programlama dili öğrenmeye çalışmanız gerektiğini düşünüyorum. Ve ben çok, çok farklı bir dil demek istiyorum.
Bu nedenle, C # veya Java çerçevelerini kullanırken .net çerçevesi hakkında daha fazla bilgi edinirken esnek olmanıza yardımcı olur, Haskell, Smalltalk, Scala, Clojure veya Ruby öğrenmek tekniğinizi genişletecek ve bazılarını faydalı bir şekilde alabileceğiniz farklı şekillerde düşünmenize yardımcı olacaktır. ana dilinize geri dönün ve Java tepenin kralı olmaktan çıkarsa, bazıları devam etmenize yardımcı olabilir.
C'yi hiç öğrenmediyseniz, sözdizimi Java'ya getirilmiş olmasına rağmen, zihniyet oldukça farklı olabilir. OO kodunun sadece usule uygun görünen bu dilde nasıl yazılabileceğini anlamak, onu derinlemesine ve hatta daha iyi bir şekilde bilmeye değer.
Bruce Tate'nin C ++ 'ın yükselişini ve düşüşünü dikkate alarak yalnızca bir dilde olmanın tehlikelerini vurgulayan "Beyond Java" kitabını okumanızı öneririm. Her ne kadar C ++ ölü olmaktan çok uzakta olsa ve onlarca yıl kalmış olsa da, yalnızca diğer dillerdeki verimlilik artışlarından yararlanamayan durumlarda kullanımı giderek daha da kısıtlanıyor. Buna karşılık, yakut bir çerçeve olan Sinatra, yaklaşık 6/7 kod satırında basit bir web hizmeti oluşturmanıza izin verir, C ++ eşdeğeri bundan daha büyük bir sipariş olabilir.
Anadili İngilizce olmadığınızda, en azından İngilizcenizi geliştirmek için konsantre olmalısınız . Bunu tecrübelerime dayanarak söylüyorum. Bu dili anlamak bana çok yardımcı oldu.
Programlama dillerini, teknolojileri ve yeni kavramları öğrenmek için tüm iyi malzemeler (kitap, makale, kod vb.) İngilizce olarak yazılmıştır.
Diller işi bitirmenin bir aracıdır. Bazı diller bazı problemler için iyidir, diğerleri genellikle her türlü problem çözmede iyidir. Yeni dilleri ortaya çıktıkça öğrenmenizi öneririm. Bu ay moda olanlara kafayı takma ama ne yapabileceklerini, neyin iyi olduğunu öğren. Tavsiyem yılda 1 yeni dil. Bundan daha hızlı ortaya çıkıyorlar, ancak araç kutunuza yeni araçlar koymak istiyorsunuz, bloktaki şık yeni çocuk değilsiniz.
Dillerdeki farklılıklardan bahseden bir makale Paul Graham'ın "Ortalamaları Dövüşmek" dir. Okumayı öneriyorum, ancak önemli bir bölüm burada ("Blub" ı varsayımsal bir dil olarak kullanıyor, böylece en sevdiğiniz kordonun neler yapabileceğini tartışmamanız için):
Ya da Perl 4? Perl 4 ve Perl 5 arasında, dilsel sözcük kapanışları eklendi. Perl bilgisayar korsanlarının çoğu Perl 5'in Perl 4'ten daha güçlü olduğu konusunda hemfikirdir. Ancak bir kez yüksek seviyeli bir dilin diğerinden daha güçlü olabileceğini kabul ettiniz. Ve kaçınılmaz olarak, özel durumlar dışında, alabileceğiniz en güçlüleri kullanmanız gerektiğini takip eder.
Ancak bu fikir nadiren sonuçlandırılmaktadır. Belli bir yaştan sonra, programcılar nadiren gönüllü olarak dil değiştirirler. İnsanların alıştığı dil ne olursa olsun, yeterince iyi düşünmeye meyillidirler.
{Kesik}
Varsayımsal Blub programcımız güç devamlılığına baktığı sürece, aşağı baktığını bilir. Blub'dan daha az güçlü olan diller açıkça daha az güçlü, çünkü alıştığı bazı özellikleri kaçırıyorlar. Fakat varsayımsal Blub programcımız diğer yöne baktığında, güç devamlılığı ardına bakmaya başladığını anlamıyor. Gördüğü şey sadece tuhaf diller. Muhtemelen onları Blub'a eşdeğer güç olarak görüyor, ama bütün diğer tüylü şeyler de fırlatılıyor. Blub onun için yeterince iyidir, çünkü Blub'da olduğunu düşünüyor.
Güç sürekliliğini artıran dillerden herhangi birini kullanan bir programcının bakış açısına geçtiğimizde, sırayla Blub'a baktığını görüyoruz. Blub'da bir şey nasıl yapılır? Y bile yok.
İndüksiyonla, çeşitli diller arasındaki iktidardaki tüm farklılıkları görebilecek konumda olan tek programcılar en güçlü olanı anlayanlardır. (Muhtemelen Eric Raymond'ın Lisp'i daha iyi bir programcı yapması için kastettiği şey buydu.) Blub paradoksu nedeniyle diğerlerinin görüşlerine güvenemezsiniz: kullandıkları dilden memnunlar, çünkü kullandıkları dilin programlar hakkında düşünmenin yolu.
http://www.paulgraham.com/avg.html
Gönderdiğimiz uygulamaların çoğu C # veya VB ile yazılmıştır. Bir uygulamaya komut dosyası eklememiz gerektiğinde, Python'u seçtik (Lua ikinci seçenekti). F # öğreniyoruz, çünkü herkesin C # / Java / VB olup olmadığını açıklamak ve anlamak zor yeni tüylü şeyler yapabilir.
Her şeyden önce, çoğu programcı için kaçınılması gereken çok sayıda dil vardır: javascript, sql, c, vb.
ördek tipinde bir betik dili bilmek de iyi bir fikirdir. Örneğin perl, python, ruby, lua vs.
daha iyisi ya da daha kötüsü için, muhtemelen bir noktada c # ve / veya java ile de karşılaşacaksınız, bunlar oldukça yaygın.
Her durumda, yapay olarak kendinizi sınırlamayın. Açıkça ilginç araçlar bulmaktan kaçınan kişilerin tanıdığı kodlayıcılar dünya görüşlerini ve sınırlı etkiye sahip görünüyor.
Bu, bir anlamda genelci tartışmalara karşı başka bir uzman haline gelebilir. Bazı insanlar bir dili, kendileri için iyi olan büyük derinliklerde tanıyarak uzun zaman geçirebilirler. Diğer insanlar, kendileri için uygun olan birçok farklı dil hakkında bir şeyler bilmek isteyebilirler. Çoğu insan bu iki uç arasında.
Burada keşfedilecek dil önerileri istiyorsanız birkaç fikir:
İşlevsel programlama - Haskell veya Lisp burada örnek olur ve paradigma kayması bir dereceye kadar baş döndürücü olabilir.
Veritabanına özel - PL / SQL veya T-SQL, bazı işlevleri için veri tabanı gerektiren sistemler ile daha fazla arka uç çalışması yapmakta kullanabileceğiniz faydalı olabilir.
UI web dilleri - ActionScript veya Javascript, burada Zengin İnternet Uygulamalarında kullanılan dillere örnek olabilir, ancak AIR, bazı masaüstü uygulamalarının Twitter API'sini kullanarak Twhirl gibi bazı durumlarda web çağrılarını kullanmasını sağlayabilir.
Bunlar sadece fikirlerdir ve bunlar olmak istediğiniz yere bağlı olarak sizin için yararlı veya yararsız olabilir. Yaptığın seçimlerde başarılar.
Bir programcının üç dil bilmesi gerekir: C, İngilizce ve Başka Bir Şey.
C, çekirdek bir dildir, makineye yakındır ve birkaç üst seviye dilde ortak olan sözdizimi kurallarına sahiptir. C sizi veri yapıları gibi şeyleri Java'dan çok farklı bir şekilde düşünmeye zorlar. Ayrıca, Python ve Ruby vms'leri C'de yerleşiktir ve hızınızı artırmak istediğinizde C'yi her iki dile sıralayabilirsiniz.
İngilizce, ortak programlama dilidir. Çoğu kitap, teknik rapor, teknik web sitesi ve dergi makalesi önce İngilizce, bazen de İngilizce çıkar. Ayrıca, eğer İngilizce ilk diliniz değilse, İngilizce öğrenmek, araçlarınızı kavramların manipüle edilmesi için genişletecektir (bu, elbette diğer dilleri de öğrenen İngilizce konuşanlar için geçerlidir).
Başka Bir Şey, prosedürel olmayan, statik olarak yazılmayan veya güçlü bir şekilde nesne yönelimli bir dil olmalıdır veya bir şekilde temelde C. Haskell, Scala, Python, Ruby, bazı Lisp lehçelerinden farklıdır. .
Bundan sonra, özel durumunuzun neye benzediğini, muhtemelen C # veya Java'yı öğrenebilirsiniz.