Rekabet gelişim için 'lingua obscura' kullanıyorsa (neden) endişelenmeliyim? [kapalı]


16

Paul Graham'ın makalesini okuyordum - Beating The Averages (2003) ve işte şunları söylemeliydi:

İş tanımlarının ne kadar BT aroması varsa, şirket o kadar az tehlikeliydi. En güvenli tür Oracle deneyimini isteyenlerdi. Bunlar hakkında hiç endişelenmene gerek yoktu. Ayrıca C ++ veya Java geliştiricileri istediklerini söylediler. Perl veya Python programcılarını isteselerdi, bu biraz korkutucu olurdu - bu en azından teknik tarafın gerçek hackerlar tarafından yönetildiği bir şirket gibi görünmeye başlıyor

Şimdi, bu tarihli bir deneme. Ancak, yaygın olmayan bir dil (C / C ++ / Java, C #) kullanmanın nasıl daha az tehlikeli olacağını göremiyorum . Bir kuruluşun programcıları geliştirme diliyle çok akıcıysa, kodları uygun bir hızda çıkarmak konusunda eşit derecede becerikli olmalıdırlar. Aslında yaygın olmayan bir dil kullanırsanız uzun vadede çok fazla programcı bulunmayacağından, bakım / geliştirme sorunları sizi etkilemez mi?

Çabuk kirlenen sistemler yapmak için, bazı dillerin diğerlerinden nispeten daha erken kalkmanıza izin verdiğini kabul ediyorum. Ama Paul Graham'ın makalesi / yorumu 2012 ve sonrasında mantıklı mı? Bir girişim, geliştirme için tipik BT dillerini kullanacaksa , rekabet neden daha az endişelenmelidir?

Dilin kendisinin nasıl bir fark yarattığını göremiyorum. IMHO, geliştiricilerin önemli dil ve çerçevelerin kullanılabilirliği ile ilgili deneyimidir, böylece sadece belirli bir dilde kodlama yapmak değil, KURU (kendinizi tekrarlamayın).

Kaçırdığım şey nedir? Yeni başlayanların BT aromalı olmayan dilleri daha iyi seçtiklerini ima ediyor mu (geliştiriciler onlara son derece becerikli olsalar bile)? Bu iddianın arkasındaki (programlama) ekonomik / piyasa güçleri nelerdir?

Not: 'lingua obscura' kimsenin duygularını incitmek anlamına gelmez :)


4
Emtia dilleri ile güç dilleri arasındaki boşluk hala devasadır. Java ile veya benzer geliştirme hızından, örneğin Lisp ile büyüklük sırasına göre daha iyi performans elde etmek hala mümkündür.
SK-logic

4
@ SK-logic - bunu yedekleyecek herhangi bir veri var mı?
Doktora

2
@Nupul, programlama dillerinin verimliliğine dair neredeyse hiçbir resmi araştırma yok, bu yüzden sadece anekdot kanıtlarına ve kendi deneyimlerime güvenebiliyorum. Birkaç kağıt gördüm, daha sonra kazmaya çalışacağım. Lisp'e özel olarak, kelimenin tam anlamıyla herhangi bir dile ucuza ve kolayca dönüştürülebilecek şekilde diğer dillerden farklıdır . O birleştirir Yani bütün sivil güç dilleri sabit ve dar oysa, özellikleri ve tüm diğer diller avantajlarını. Verimlilik açığını açıklayabilir.
SK-logic

8
@ SK-mantığı gerçekten mi? LISPers'ın aksini iddia etmesine rağmen, gerçek şu ki çok az bir değer programı - Emac'ların olası hariç tutulmasıyla birlikte - ve neredeyse hiçbir büyük web sitesi - ViaWeb'in 1997'de hariç tutulmasıyla inşa edilmiştir. inanılmaz verimlilik artışı iddialarına rağmen, çoğu LISP savunucusunun hepsi konuşur ve yürümez. Sadece akademik araştırmaları var (daha fazla araştırma ve üretim kalitesi daha az), hobi projeleri ve birkaç şirkette kullanılan bazı dahili şeyler.
Hejazzman

2
@ SK-logic Sorun lisp'de statik olarak yazılmış bir dil uygulama yeteneğinize rağmen statik yazım eksikliğidir.
BenjaminB

Yanıtlar:


16

Alet zinciri bir semptomdur.

Bir şirket Oracle'ı seçtiğinde, bu aşağıdakilerin bir göstergesidir:

  • Atmak için çok para
  • Büyük şirket
  • Birçok yönetim katmanı ile derin iç içe geçmiş organizasyon yapısı
  • Şirket 'takımlar' tarafından yönetilir: yönetici tipleri veya pazarlama ve satışlar
  • Devasa kod tabanlı büyük monolitik yazılım ürünleri yapar
  • Her şey için biçimsel süreçler

Bir şirket Python'u seçtiğinde, bu bir işarettir:

  • Küçük genç şirket
  • Yedeklemek için para yok
  • Düz hiyerarşi
  • Şirket programcılar tarafından yönetilir
  • Küçük kod tabanlı küçük tek amaçlı ürünler yapar
  • Çoğunlukla gayri resmi süreçler

Bu ikisi bir araya geldiğinde, büyük şirketin stratejisi risklerden kaçınmak, momentumlarını kullanmak ve rakiplerini geride bırakmaktır. Küçük rekabetin stratejisi önce rekabeti pazara yenmek ve daha sonra üstün ürün olmaya devam etmektir. Küçük şirket doğru savaşları seçerse, daha hızlı ve daha reaktif davranarak ve büyük şirketin risklerden kaçınma eğiliminden yararlanarak büyük şirketi kolayca gerçekleştirebilirler.


1
Oracle kullanan şirket muhtemelen beş yıl içinde hala orada olacak!
James Anderson

3
@ JamesAnderson: pazara bağlı olarak, evet. Bir sonraki facebook olmaya çalışıyorlarsa, muhtemelen değil; onlar büyük bir sigorta şirketi ise, muhtemelen evet. Ama sonra, büyük bir sigorta şirketi iseniz, bir garaj girişimi korkmanız gereken bir şey değildir.
tdammers

Yani bir Python / Ruby / Scala / Clojure dükkanında çalışmak istiyorum gibi görünüyor ... mmm. Deneyimlerime göre, geri ödemeleri olan yerler yükseltmek için çok yavaş olma eğilimindedir. Emin değilim neden. Bir sürümü ileriye taşımanın acısı genellikle birçok sürümü ileriye taşımaktan daha yumuşaktır. Ücretli yazılım "genellikle" geçiş sağlar, ancak bu geçiş genellikle çoğu durumda sürümden sürüme sürümdür.
Rig

25

Belirsiz bir dil seçimi, bir başlangıçta nadir görülen teknik özgüven anlamına gelir. Ortak bilgeliği terk etmek isteyen bir şirket, yazılım geliştirme hakkında çoğu şirketin bilmediği bir şey biliyor olabilir. Sonra tekrar, sadece wanker olabilirler.


1
Gerçekten de, Graham'ın " teknik tarafın, en azından gerçek bilgisayar korsanları tarafından yönetildiği bir şirket gibi görünmeye başlaması " ile tam olarak bunu kastediyor - en azından teknoloji uzmanlarının onun için gerçek bir rekabet olacak kadar akıllı olabileceği bir şirket .
Ross Patterson

8
Günümüzde çoğunlukla wankers, çünkü "belirsiz bir dil seçmek" wankers ve dilettantes arasında günün hevesidir.
Hejazzman

2
Aynı zamanda şirketin içe baktığını ve "ne inşa edeceğinden" "nasıl inşa edileceğine" odaklandığını gösterir. Bu şirketler pek çok müşteri çekmiyor.
James Anderson

13

PG'nin tutum hakkında dilin özelliklerinden daha fazla yorumunu görüyorum. Dahili BT zihniyetine sahip insanlar bunu güvenli bir şekilde oynarlar. Düşük riskli teknolojiler kullanırlar, riski en aza indirgemek ve düşük risk stratejisini almak için süreçlere sahiptirler. Onlar senin yemek için kendi öğle yemeği hakkında endişe çok meşgul.

Kanayan kenardaki insanlar (python 2003) endişelenecek kişilerdir. Onlar aç. Risk alırlar. Entelektüel olarak meraklılar. Heyecan verici yeni bir dil öğrenmek için geç kalan aynı kişi, endüstrinizi sizden önce yükseltebilecek türdür.


4
Tabii ki aldıkları risklerden biriyle de yutulabilirler ...
Michael Borgwardt

3
"" "Kanayan kenardaki insanlar (python 2003) endişelenecekler. Açlar. Risk alıyorlar. Zihinsel olarak merak ediyorlar." "" - ya da en yeni moda dili kullanan moda kurbanları ve kalkınma pragmatiklerine dokunmak yok.
Hejazzman

2
Her ikisi de doğru. Bu bir sayı oyunu. Ama tam tersini yapın. Bazen aykırı değerler patlar. Bazen başarılı olurlar. Ama COBOL ile peşinizden bir yarışmacının gelmesinden hiç korkar mıydınız?
MathAttack

13

Graham bir rakip olarak onun için daha az tehlikeli değil, sadece daha az tehlikeli anlamına gelir. Onun anlamı Java'nın (veya 2003'te C ++ veya 1980'de COBOL) daha az tehlikeli olması değil, normal olması ve bu tür becerileri arayan şirketlerin sadece ortalama rakip olma ihtimalinin yüksek olmasıdır. Ancak, belirsiz (veya daha doğru bir şekilde, daha güçlü ve daha az bilinen) dillerde güçlü yetenekler arayan şirketler izleyecek şirketlerdir.

Ve evet, bugün çok mantıklı. Graham'ın yazmasından çok önce mantıklı geldi, o günlerde Java hakkında konuşmadık.


6
Keşke bu günlerde Java hakkında konuşmak zorunda olmasaydık.
DeadMG

8

Başarılı yeni başlayanlar tarafından hangi dillerin kullanıldığını görelim. Bilimsiz bir liste, kafamın üstünde. Eğer enerjiye sahip olsaydı, uygun randomize araştırmalar daha iyi olurdu.

  • Facebook: PHP
  • Stackexchange: C #
  • Google: Java ve Python
  • Twitter: Ruby on Rails

Muhtemelen, Facebook ve Stackexchange'in rakipleri için tehdit oluşturmadığı sonucuna varıyoruz. Çok ikna edici değil.


Bakalım Paul Graham bugünlerde buna inanıp inanmıyor. Girişimleri finanse eden YCominator'ı kurdu . Ana sayfa , başarılı girişimlerinin bazılarını listeler. Onları sırayla geçtim, ilk günlerde kullandıkları dilleri çok hızlı bir şekilde araştırmaya çalıştım.

Göreceli olarak belirsiz ve tartışmasız güçlü diller için bazı tercih belirtileri vardır. Ancak Flash, PHP ve klasik ASP de listelenir.


Bu bir deneme . Yeni başlayanların teknolojilerini sevmesi ve olabildiğince hızlı hareket etmesi gerektiğinin altında yatan tavsiyeyle, sevdiği nispeten belirsiz bir dil için hiperbolik bir destek. Yeterince adil.


3
Reddit Lisp'te başladı , ancak Python'daki her şeyi çok erken bir zamanda yazdılar, çünkü kimse Lisp'i anlayamadı.
Mason Wheeler

Google, birçok farklı şey için birçok dil kullanır. Arama, krom vb. Gibi temel ürünlerinin çoğu için C ++ kullanıyorlar
mike30

@Mike Soru yeni başlayanlar hakkında. Google bir başlangıç ​​olduğunda, kullandıkları ilk diller Java ve Python idi.
MarkJ

6

Ortalama bir geliştirici ortalama araçları kullanır, çünkü daha güçlü olanların değerini görmez:

“Varsayımsal Blub programcımız güç sürekliliğine baktığı sürece, aşağıya baktığını biliyor. Blub'dan daha az güçlü diller açıkçası daha az güçlüdür, çünkü alıştığı bazı özellikleri kaçırırlar. Ancak varsayımsal Blub programcımız, güç sürekliliğini arttıran diğer yöne baktığında, aradığını fark etmiyor. Gördüğü sadece garip diller. Muhtemelen onları Blub'a eşdeğer bir güç olarak düşünür, ancak diğer tüm kıllı şeyler de atılır. Blub onun için yeterince iyi çünkü Blub'da düşünüyor. ”- Paul Graham, Ortalamaları Dayak .

(Vurgu benim.)

Dil ne kadar güçlü olursa, o kadar az geliştirici onu kullanacak ve daha az yaygın olacaktır. Bu nedenle popülerlik, bir dilin gücünün ortalamadan ne kadar uzak olduğunun iyi bir ölçüsüdür. Dil ne kadar belirsiz olursa, onu kullanan geliştiricinin ne yaptığını bilme şansı o kadar artar ve değirmenci akranlarına göre iyi bir nedenden dolayı seçmiş olur ve anlayışlı bir rakip tehlikeli bir rakiptir.


3
Bu mutlaka doğru değildir. Takım, reklam, mevcut kütüphaneler ve kaliteli öğretim materyalleri de bir dilin popülaritesini değiştirebilir.
DeadMG

@DeadMG Evet, elbette etkileyici güç tek faktör değil. Sanırım ortak farkındalıktaki tüm dillerin pazarlama, araçlar ve dokümantasyon açısından kabaca aynı olduğunu varsaydım; aksi takdirde makul bir şekilde karşılaştırılamazlar. Cehennem, kişisel tercihin bile onunla çok ilgisi var. Haskell'in bazı görevler için daha iyi olduğunu biliyor ancak gerçekten C'yi seviyorsanız, C'deki bir şeyi saf heck için kodlayabilirsiniz.
Jon Purdy

Sanırım ortak farkındalıktaki tüm dillerin pazarlama, araçlar ve dokümantasyon açısından kabaca eşit olduğu varsayımını yaptım ... - Ve bunu yapmak yanlış olur. Aslında yanlış.
Jim G.

1
@JimG. Belirli bir örnek verebilir misiniz? TIOBE endeksi dikkate alındığında, ilk 10'un ve ilk 50'nin çoğu bu alanlarda karşılaştırılabilir görünmektedir. Ayrıca, insanlar ifade gücünde büyük ölçüde farklı olan diller arasında özellik karşılaştırmaları yaparlar, neden diğer yönler için de aynısını yapmıyorsunuz?
Jon Purdy

5

Başlangıç ​​için dil seçimi zor. Çok sayıda iyi girişim, pazara girme hızı, kurucunun aşinalığı ve gelecekteki işe alım kolaylığı için "ortak" dilleri seçer.

Daha az kullanılan bir dili seçmek iyi işaretler gönderir. Gelişimi ciddiye almaya ve uzman programcılar işe almaya çalıştığınızı söylüyor. Bunlar sadece sinyaller, bir başlangıç ​​sadece dil seçiminden daha fazlası.

Alt satırda dil seçiminiz bağlamınıza uygun şekilde değerlendirilmelidir. Örneğin Facebook genellikle çok ölçeklenebilir bir dil olarak kabul edilmeyen php kullanarak ok yaptı


1
+1 yalnızca "Facebook tamam" ifadesi içinse.
MarkJ

5

Giddiğiniz en iyi ve en kötü programcılara, hangi ölçütlerden istersen, hangi diğer dilleri bildiklerini sor. Şimdi öncekini çekmek için bir iş ilanı yazın ve cevabınızı alın. Uygulamanız C ++ 'da olsa bile, okulda öğretilmeyen dilleri bilenleri işe alırsanız daha iyi bir programcı sınıfı alacaksınız.


2
-1: Ha? Üzgünüm, beni kaybettin.
Jim G.

4

Bir yarışmacının alışılmadık bir dil kullanıyor olması durumunda endişelenmeniz gereken iki farklı şey vardır:

  • Verimlilik avantajı - Alışılmadık dillerin artıları ve eksileri vardır, ancak rekabetin verilen sorun alanı için iyi seçtiği varsayılarak, gerçek bir verimlilik avantajına sahip olabilirler. Örneğin Lisps'teki meta programlama yetenekleri, önemli miktarda otomatik kod oluşturma işlemini gerçekleştirmeniz gereken her yerde muhtemelen size gerçek ve önemli bir avantaj sağlayacaktır.
  • Kültürel avantaj - eğer bir şirket büyük bilgisayar korsanları için alışılmadık bir dil kullanıyorsa, büyük bilgisayar korsanlarını cezbedecek ve tutacak konumda olabilirler. Şirketler, halklarının kalitesiyle yaşar ve ölür, bu yüzden bu uzun vadeli bir yetenek avantajına dönüşürse, gerçekten anlamlı olabilir.

Bu avantajların her ikisi de belirli bir durumda geçerli olmayabilir. Örneğin, bir girişim, doğru seçim olup olmadığını gerçekten düşünmeden, "serin olduğu için" bir dili kolayca benimseyebilir. Kolayca işe alım hataları yapabilirler. "Güçlü" bir dili kötüye kullanarak kendilerini kolayca ayaklarından vurabilirler.

Ancak bir rakip alışılmadık bir dil seçerse ve onu iyi kullanırsa , evet, ellerinizde önemli bir tehdit olabilir.

Bu ilkenin oldukça zamansız olduğunu ve 2003'teki kadar doğru olduğunu düşünüyorum - belirli diller ve paradigmalar gelip gidebilir, ancak genel, güvenli, genel amaçlı bir dil üzerinde sorun alanınıza uyan güçlü, etkileyici bir dil seçme fikri muhtemelen her zaman ciddi bir dikkate değer olacaktır.


0

Müşterileriniz kilitli değilse, evet . Güçlü diller kullanan rakiplerden endişe etmelisiniz.

Java, C #, C ++, nispeten ayrıntılıdır ve nispeten yavaş düzenleme / test döngülerine sahiptir. Bu, en hızlı geliştiricilerin bile özellik sunma hızını sınırlar. Yerleşik güçlü meta programlama ve sıfır derleme süresi ile daha etkileyici diller, uzman geliştiricilerin özellikleri olabildiğince hızlı oluşturmasına olanak tanır. Pazar payı yarışındaysanız, kazanan için büyük bir ödülle, bulabileceğiniz en iyi geliştiricileri işe almak ve en hızlı gitmelerini sağlayacak dilleri kullanmak mantıklıdır. Ölçeklenebilirlik hakkında daha sonra endişe duyabilirsiniz.


1
-1: C #, Visual Studio, Resharper, LINQ ve .NET 4.0 kitaplıkları ile yazıldığında diğer dillere göre yavaş düzenleme / test döngüleri var mı?
Jim G.

1
@Jim: karşılaştırıcılarınızın ne olduğundan emin değilim, Ruby, Groovy, Clojure ve C # kullandığım diğer modern dinamik dillerle karşılaştırıldığında, hem geliştirme stili hem de yineleme hızı açısından Java ve C ++ 'a kesinlikle daha yakın. YMMV ama downvote'unuzun özellikle hak ettiğini düşünmüyorum - OP'nin karakterizasyonu genel olarak adil. "Etkileyici diller" bir deneyin, mümkün
olana şaşırabilirsiniz

@Jim G., evet, Common Lisp ile karşılaştırıldığında, C # düzenleme / test döngüsü yavaş. Çalışan bir sistemi değiştiremezsiniz. Ve C # 'da çok daha fazla kod yazmanız gerekiyor, bu da işleri daha da yavaşlatır.
SK-logic

1
Hayır, örneğin Erlang çalışma zamanı değişikliğine izin verir ve derlenmiş bir dildir.
Ricky Clarkson

2
@JimG., Common Lisp derlenmiş bir dildir (uygulamaların çoğu saf derleyicilerdir). Artımlı derleme, tercümanlarla aynı hilelerin yapılmasına izin verirken, ayrı bir derleme ile zar zor mümkündür.
SK-logic
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.