İki programlama dili arasında ileri geri gitmek akıllıca mı? [kapalı]


28

Yaklaşık iki yıldır oldukça fazla PHP yazıyorum. Şimdi .NET (özellikle c #) geliştirme yapıyorum. Ancak, bazen geri dönüp biraz php yapıyorum.

Asıl sorum şu, bunu yapmaya devam etmem akıllıca mı yoksa C # 'da gelişmeye devam etmeli miyim? Bu bana uzun vadede zarar verir mi (asıl amacım tüm ticaretler için bir jack olmak değildir) ya da yapmak iyi bir pratik mi?


30
Tüm esnaf bir jack olmaktan daha iyi bir hüner midilli
scrwtp

27
Kendinizi sadece iki dille sınırlarsanız, kesinlikle size zarar verecektir. Araç kutunuza daha farklı araçlar alın.
SK-mantığı

4
Bu soruyu C # ile PHP arasında seçmekte tamamen özgürsünüz gibi soruyorsunuz - bu gerçekten böyle mi?
Doktor Brown,

10
Bir dilin tüm kirli ayrıntılarını bilmek şüphesiz çok faydalıdır. Ancak, birden fazla dille çalışırken, yolun aşağısında bir noktada, şu anda hangi dilde çalıştığınıza bakılmaksızın, programın bölümlerini belirli bir biçimde tasarlarken kendinizi bulacaksınız. ikincil ve uygulama önemli olan. Bu harika bir yer, çünkü insanlar yeni bir fantezi Z ++ dilinde çalışırken, gelecekte bile programcı olma potansiyeline sahip olduğunuz anlamına gelir.

2
Sadece iki? Birçok programcı düzenli olarak birçok dilde çalışır. Birkaçını bilmek size çizmeniz gereken daha büyük araçlar sağlar.
Caleb

Yanıtlar:


75

İki dili aynı anda kullanmak hiçbir şeydir. Programcıların her gün birkaç farklı dil kullanması nadir değildir. Farklı görevler ve farklı teknolojiler farklı diller gerektirir .

Sadece bugün, zaten dört ya da beş farklı dil kullandım ve bu ilginç çünkü şu ana kadar bir program yaptım . Tek yaptığım bir sunum üzerinde çalışmak.

İyi bir programcı olarak aslında var gerekli birkaç dilde yolunuzu biliyorum ve makul akıcılık ulaşma (ve sonra koruyarak) tek yolu gereğidir kullanarak bu dilleri.


4
Düzenli olarak en az 3 dili kullanmadan birinin nasıl etkili bir programcı olabileceğinden emin değilim.
Brian Knoblauch

1
@Brian - Bu üç dil sizin ana konuşulan / yazılı diliniz, ana programlama diliniz ve SQL ve / veya HTML mi?
KeithS,

2
@KeithS Yalnızca istemci tarafında süper düz sayfalar oluşturuyorsanız ve hiçbir zaman sunucu tarafında XML kayıtlarına dokunmayın. CSS ve Javascript, XPath ve XSLT ve XQuery gibi kendi dilleri olarak sayılır.
12'de

2
"Çoğu insan" veya "çoğu geliştirici" içeren herhangi bir türden bir alıntı yapılmalıdır. Aksi takdirde özneldir. Ben (ve ben dahil) tanıştım Hemen hemen her geliştirici SQL bir programlama dili dikkate alır ve Turing tamlık (tipik şekilde tasarlanmıştır DSL'lere, düşünmek bir programlama dili için gerekli bir faktör değildir DEĞİL tam turing olmak.) HTML ve XML besbelli olan programlama dilleri (XML tabanlı etki alanına özgü dilleriniz olsa da) Regex'ler programlama dilleri değil, programlanabilir / yapılandırılabilir otomatlardır.
luis.espinal

2
Bu bir kaynak değil. Bu bir tartışmanın bağlantısıdır (tartışmalar kendi başlarına kaynaklar değildir) ve yalnızca CSS ve HTML'ye odaklanan bir bağlantıdır. "Turing complete" testine değinmiyor (Martin Fowler'in DSL'ler konusundaki çalışmalarını okumanızı öneririm) ya da SQL'in bir programlama dili olup olmadığı (yani, işte gerçek bir kaynak: en.wikipedia.org/ wiki / SQL veya bu amazon.com/SQL-Programming-Language-Kirk-Scott/dp/0763766747 ).
Yazımı tam olarak okuyamıyorsunuz ya da stackexchange ile

37

yapmak iyi bir pratik mi?

Mükemmel bir uygulamadır. Dahası, yeni bir tane deneyerek dil listenizi düzenli olarak genişletmenizi tavsiye ederim.

Diller ve teknolojiler birkaç yıl içinde çok hızlı bir şekilde iyiliğin içine girip çıkıyor. Örneğin, Objective C, iki buçuk yıl boyunca neredeyse öldükten sonra inanılmaz bir güçle başladı - bu endüstri standartlarına göre bir sonsuzluk!

“Tüm işlemlerde bir jack olmamanız” planlamanız çok önemli değil: eğer sektörde yeterince uzun süre kalmayı planlıyorsanız, teknoloji yığınınızı en az bir kez değiştirmek zorunda kalacağınızı varsaymak çok güvenlidir kariyerin boyunca. Birden fazla dil kullanmak artık oldukça kısa bir ihbarda bulunmaya hazır olmanızı sağlıyor.


14

Bu bana uzun vadede zarar verir mi (asıl amacım tüm ticaretler için bir jack olmak değildir) ya da yapmak iyi bir pratik mi?

İki veya daha fazla dili bilmek size asla zarar vermez. Dillerinizi çok sığ (iç işleri anlamadan) bilmek size zarar verebilir.

Benim kişisel tercihim, daima önce bir nesne yönelimli programlama diline hakim olmaktı . Bu, tüm programlama kavramlarını derinlemesine öğrenmenizi sağlar ve bir ihtiyaç olduğunda bir sonrakini öğrenmeyi kolaylaştırır.

yapmak iyi bir pratik mi?

Kesinlikle evet!

Kesinlikle birden fazla şey öğrenmeyi ve bazı uygulamalar kurarak pratik yapmalarını öneririm . Bu arada, web geliştirme yapmak istiyorsanız ya da planlıyorsanız bazı kodlama dillerini (jQuery, KnockoutJs vb.) Ve kütüphaneleri öğrenmeyi de planlayabilirsiniz.


1
OOP öğrenmenin size işlevsel programlamanın birçok kavramını öğreteceğini sanmıyorum, birincisi, JavaScripts kapsam kuralları, C # gibi diğer popüler OOP dillerinden çok farklı.
phant0m

Kesinlikle katılıyorum. Ancak, jQuery ve KnockoutJ'lar NO kodlama dilleridir. Temel javascript bilgisi olmadan "jQuery öğrenmek" istemem.
Bruno Schäpper

jQuery bir süreçte JavaScript öğrenmeden jQuery'i öğrenemezsiniz çünkü jQuery bir dil değildir, bir dilde yazılmış bir kütüphanedir.
ILikeTacos

5

Uzun vadede size zarar vermemelidir, birkaç dilde yetkin olmak sizi çok yönlü bir geliştirici yapar. "Doğru işi yapmak için doğru aracı" kullanmak, nihai amaçtır ve farklı dillerde ayıklanmak, orada başka ne olduğunu bildiğinizden ve hangi platform / çerçevenin / dilin kullanılacağı hakkında iyi bilgilendirilmiş bir karar verebildiğinizden emin olmanıza yardımcı olur. bir şey yaptırmak.


Cevabınız için teşekkürler, ama sık değişen kaymaların öğrenme sürecime zarar vermeyeceğini mi yoksa uzatıp uzatmayacağını mı merak ediyordum, bu sadece kişinin yeteneğine mi bağlı?
Lamin Sanneh

@LaminSanneh Başka bir dil öğrenmek, ilkinde sizi daha kötü yapmaz. Bu bir RPG değildir ve her dile atayabileceğiniz belirli sayıda "programlama becerisi" puanınız yoktur. En kötü ihtimalle, başka bir dile adamanız zaman alıyor. Ancak diller fikirlerinizi ifade etmenin bir yoludur ve yeni diller öğrenmek size zaten bildiklerinize uygulayabileceğiniz yeni, yeni bakış açıları ve fikirler verir. Tabii ki, her dilin sözdizimini elden bilmezsin, ama kimin umrunda? Uzak bir Google araması uzakta
Jay

5

Kariyerinizin boyunca, sen olacaktır sahip yeni diller ve yeni teknolojileri öğrenmek için; Endüstri basitçe onu gerektirir. İlk profesyonel görevimde Ada, C ve Fortran'da yazılmış kodları bazı SQL ve kabuk betikleriyle teslim etmek zorunda kaldım. Son birkaç yıl içinde C ++ 'dan Java' ya geçmek ve tekrar geri dönmek zorunda kaldım. Csh, bash ve perl'de kabuk betikleri yazdım.

Farklı dilleri öğrenmek için zaman ayırmak, özellikle farklı alanlarda (OO, fonksiyonel, mantıksal, vb.) Olmaları, size çeşitli şekillerde yardımcı olacaktır. Beynini keskin tutacak. Kavramları uygulamadan ayırmanıza yardımcı olacaktır (örneğin, karmalar ve haritalar sadece belirli bir dildeki veri türleri değildir). Belirli bir sorun için hangi araçların uygun olduğu konusunda size daha iyi bir fikir verecektir (örneğin, C'de bir Web sitesi yapmam ya da Haskell'de bir aygıt sürücüsü yazmam). Bir iş bulmanızı kolaylaştırabilir ("Hey, Zaten Intercal 1'i biliyor , onu eğitmek zorunda değiliz!"). Dil tasarımcılarının karşılaştığı zorluklar hakkında bir fikir verecektir. Kendi programlama dilinizi yaratmanız için size ilham verebilir.

En azından sizi sıkılmaktan alıkoyacak.


1. Şaka. Intercal'ı öğrenmeye çalışma.


4

Bu yıl emekli olanlar, C yaratılmadan önce kariyerlerine başladılar . Programlama dillerini kariyerinizde bir veya iki kez değiştirebileceğinizi söylemek güvenlidir. Bunu anlamayan işverenler için çalışmak istemezsin.

Yeniyken, iki dil arasında bağlam geçişi yapmak çok daha zordur, böylece geçiş yapmadan önce bir dilde en az 4-8 saat çalışıyorsanız daha üretken olursunuz. Daha sonra üretkenlik kaybı yaşamadan anında geçiş yapabileceksiniz. Başka bir deyişle, iki dilin kullanılması sonunda sizi yavaşlatmak yerine bir güç olacaktır.


2

Bunun bir ters ve dezavantajı var.

İşte tersi ...

Diğerlerinin de belirttiği gibi, yeni dil öğrenmek ve birçok dil ve programlama aracıyla çalışmak, programlamada uzun bir kariyere sahip olmak için neredeyse şarttır. Yıllar geçtikçe işler değişir, araçlar / diller gelir ve gider. Elbette, 1980'lerde kullandıkları aynı ana programdaki COBOL'de programlama yapmaktan memnun olan bazı insanlar var ama bu nispeten nadir bir durum. Çoğu programcı, kariyerleri boyunca birkaç kez araç / dil değiştirmeye başlar. Bazen işe alabilirsiniz, çünkü daha eski bir teknolojiyi veya bir şirketin birlikte çalıştığı tüm dilleri bilirsiniz.

Dezavantajı ...

Bazı işverenler, sizi "tüm işlemlerin canlandırıcısı, hiç kimsenin efendisi" olarak görecek ve başvurunuzu size bir şans vermeden reddedecektir. Belirli bir alanda dar bir uzman arıyorlar, sadece iyi, iyi yuvarlanmış bir programcı değil. Bazen İK ile kesinti yapabilirsiniz, çünkü “[X] 'de 5 yıllık sürekli deneyimim yok”. Özgeçmişinizi işe uyacak şekilde uyarlayarak bundan kaçınabilirsiniz, ancak bu teknik bir röportajda size yardımcı olmayabilir.

Bana göre, tersi çok daha iyi ama azınlık bir organizasyonun bunu olumsuz olarak gördüğünün farkında olmalısınız.


+1, Üstelik, bu azınlık örgütleri ile kötü programlama ve etkisizlik arasında bir korelasyon bulunduğuna inanıyorum.
K.Steff

2
Bu olumsuz, tam tersini düşünen işverenler tarafından iptal edildi. Çalıştığım yerdeki kararları işe almakta bir sözüm var ve kemerlerinin altında sadece bir programlama dili olan birini işe almaya ikna etmek çok zor olurdu. Belki küçük bir pozisyon için, ama kesinlikle bir üst düzey geliştirici için.
Jon Hanna,

@JonHanna - Asıl sorun, geliştirme ekibinin, bazen otomatik bir program tarafından İK tarafından taranmalarından dolayı potansiyel geliştiriciyle röportaj yapamaması. Bu, elbette, daha büyük organizasyonlarda daha yaygın bir konudur. İK çalışanlarınızın keyfi kriterlere göre en iyi adayları taramadığından emin olmak önemlidir.
jfrankcarr

Eksileri işaret etmek için +1 . Nerede olduğumu, "tüm esnaf jack, hiçbiri usta" görüşünü tutan şirket sayısı o kadar küçük değil.
lsoliveira

Evet, ama bunu herhangi bir kaliteye çevirebiliriz; İK'da kötü bir kalite olduğunu düşünen bir aptal her zaman olabilirdi. Sonuçta, eğer bir organizasyondaki İK aptalsa, işe alınmayacaklar ve işe alınırken işsizlik hattından daha iyi olabilirlerse, hemen yeni bir iş arayacak ve başka bir yerde iş bulacaksınız. .
Jon Hanna,

2

PHP geliştirme yaparken javascript veya SQL yazdınız mı? C # gelişiminizde hala ikisini de kullanıyor olabilirsiniz. Bir programlama dili kullanmak kadar kolay değil.

Bunu yapmaktan mutluysan, endişelenme. Her ikisini de (veya ikisini birden) yapmak istemiyorsanız, o zaman bir sorununuz var demektir.


2

Yeni bir programlama dili öğrenmek, programlama hakkında zaten bildiğiniz dillere uygulayabileceğiniz şeyler öğretecektir. Kesinlikle en az bazı dillerle oynamayı düşünmelisin, profesyonelce kullanmasanız bile, sadece çok az olmaktansa.

İdeal olarak, zaten bildiklerinize yaklaşımda çok farklı olanı.


2

Hayır, çoklu dil öğrenmek ve bunları oldukça sık kullanmak yanlış bir şey değil. Gündelik günlerimde Ruby, PHP, JavaScript, CoffeeScript, Python ve zaman zaman C ile karşılaşabiliyorum. Bu dillerin hepsini oldukça iyi biliyorum ve birinden diğerine gitmek beynimde bir geçiş yaptı. Elbette, başkalarına gittiğimde bazı dillerin özelliklerini özlüyorum ama bunun üstesinden geleceksiniz.

Her zaman derinlemesine öğrendiğim bir dilin, daha sonra da "gelecek ve gelişecek" diline sahip olmaya çalışıyorum. Bu yolla her zaman net bir eğitim hedefine ve sonra da ufka doğru bir şeye sahip olursunuz. Şu anda Ruby benim ana dilim ve Go ile deney yapıyorum. Muhtemelen Go geliştiricisi olarak iş bulmayacağım ama yeni bir dil öğrenmek daha iyi bir geliştirici oldu.

Bir geliştiriciyle röportaj yaparken, her zaman özgeçmişlerinde birkaç farklı dil görmek isterim. Eğer bir geliştiricinin özgeçmişinde "C / C ++" veya "PHP ve Javascript" varsa, 4 ya da 5 dilde sağlam bir kavrama sahip birinden daha az ilginç görünüyorlar. İstediğiniz dilde kendinizi rahat hissettiğinizden emin olun, özgeçmişinizdeki herhangi bir şey röportajda adil bir oyundur!

Kısacası: Düzenli olarak çoklu dil kullanmak, mesleklerini önemseyen iyi bir geliştiricinin işaretidir. Kodlamaya devam et!


Geliştiricinin özgeçmişinde "C / C ++" yazması durumunda, oradaki tek dil olmasını isterim. Ancak, diğer, ahlaksız dillerle, daha iyi.
Kodlayıcı

2

Özgeçmişlere bakarken genellikle birden fazla dil bilen birini ararız. Ayrıca, bir kişinin deneyimi arttıkça kullandıkları dillerin de artması gerekir.

Çevremizde sık sık yeni ve ilginç problemlerle uğraşmak zorundayız ve yeni bir dil öğrenmek zorunda olsun ya da olmasın, bu sorunları atlamak ve çözmek isteyen insanları arıyoruz. Sorun bir Windows masaüstünde, bir Windows sunucusunda, bir Linux sunucusunda veya bir tarayıcıda çalışan kodda olabilir.

Birden fazla dil bilmek, mesleklerine karşı iyi bir tavrı olan birisinin işaretidir. Her zaman yeni şeyler öğrenmek isterler ki onlar da yaparlar. Çok sayıda dil bilmeme, bir insanın yalnızca minimum seviyeye ulaştığının ve öğrenmeyle ilgilenmediğinin bir işaretidir.


2

İnsanların birden fazla dil kullanarak program yapmaları her zaman böyle olmuştur. İnsanlar Meclisi kullanırken, mimarileri her değiştirdiklerinde yeni bir Meclis dili kullanmaları gerekir.

COBOL veya Fortran yapan insanlar genellikle tipik olarak RPG ve / veya JCL yaptılar.

Unix'te insanlar C, sed, awk, shell script ve Unix mutfak lavabosundaki hemen hemen her şeyle çalışacaklardı (Unix'teki hemen hemen her komut satırı aracı kendi, çok özel DSL'dir.)

DOS'ta, insanlar toplu komut dosyalarına ek olarak Turbo Pascal veya C de programlama yaparlar. Daha sonra Windows geldiğinde, VB ya da SQL ve muhtemelen toplu yükleme komut dosyaları ile birleştirilmiş PowerBuilder gibi bir şeydi.

Günümüzde, bir de-facto olduğunu insanlar "iş" ikiden fazla dilde ile herhangi bir gün (ve tarafından "iş" demek fiili günden güne kodlama yapmak veya çalışma bilgisine sahip). Java veya C # veya VB, en azından JavaScript ve SQL ile karıştırılmıştır. Ardından toplu iş / iş komut dosyası ve benzeri için başka diller devreye girer. Daha sonra, her dil için, kendi başına bir mini dil olan dahili bir DSL'yi uygulayan bir çerçeveye sahipsiniz.

Bu yüzden, sadece birden fazla dilde çalışmak faydalı değildir, ama gereklidir. Tek bir dille modern, karmaşık bir sistem inşa etmenin bir yolu yoktur (ve "inşa" derken, derleyen bir saçmalığı kodlamakla kalmaz, aynı zamanda iyi bir tasarıma sahip bir şey inşa etmeyi kastetmiyorum.)

Heck, uzuvdan çıkacağım ve kolejdeki çocukların bu meslekte olma konusunda ciddi olduklarında iki veya daha fazla dilde yetkin olmalarını bekleyeceğimi söyleyeceğim .

Yani, sorunuzla ilgili:

Asıl sorum şu, bunu yapmaya devam etmem akıllıca mı yoksa C # 'da gelişmeye devam etmeli miyim? Bu bana uzun vadede zarar verir mi (asıl amacım tüm ticaretler için bir jack olmak değildir) ya da yapmak iyi bir pratik mi?

Yani, kısa cevap, hayır, dilleri kullanmak veya diller arasında geçiş yapmak size kotu vermeyecektir. Birden fazla dil bilmek, sizi tüm işlemlerden alıkoymayacaktır ve bir geliştiricinin birden fazla dil kullanamayarak uzman olması mümkün değildir.


1

Ana dil (ler) inizle karşılaştırmalı olarak ne kadar karşılaştırmalıysanız, belirli şeylerde onu özellikle güçlü veya zayıf kılan tasarım değişimlerini daha iyi anlar ve bu şeyleri telafi eder / telafi edersiniz. En az bir tanesine usta olun ama başkalarının canını sıkmak için endişelenmeyin. Bu sadece iyi görünüyor.

“Üst düzey” geliştiricilerin görünümünden listelenen tek bir dille nasıl devam edileceğini sormak daha iyidir. Bu sorunun cevabı şudur: "Yaşamak için yaptıkları şeyle pek ilgilenmiyorum."


0

İki dil size yardım edebilir veya etmeyebilir - bu değişir. Sana zarar vermeyecek, orası kesin. Birçok kullanıcı, 'ana dilden' başka bir şey kullanmanın zaman kaybı olduğunu düşünmeye meyillidir, ancak kesinlikle katılmıyorum. Başka bir dil öğrenmek (ve onu kullanmak) saf bir avantajdır: size problemlerin nasıl çözüleceğine dair farklı bir bakış açısı sunar. Her zaman belirli görevler için dillerden birini kullanmaya başlayacaksınız (Python'u öğrenme ve kullanma şansımın ardından bana olduğu gibi).


0

Bu durumda, JAVA'dan C # 'ya geçmek ve sürekli geri dönmek istemezsiniz, bunun yerine C # ve PHP ile gerçekten ilgilenmezsiniz.

WAMP yığını (Windows / Apache / MySQL / PHP) ve C # kullandığınız bazı WEB tabanlı şeyler yapmak istediğinizi varsayalım. Bazı SOAP tabanlı servisler yazmak için C # kullanın ve ardından bunları tüketmek için PHP kullanın.

Bu benim için tamamen kabul edilebilir görünüyor.

Her neyse, birden fazla dil bilmek iyi. Ne kadar çok bilirseniz o kadar iyi. PHP / C # / Java / Python / javascript kütüphaneleri [örneğin, JQuery]. Mümkün olduğu kadar çok insan için faydalı olun.

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.