Якщо конкуренція використовує "lingua obscura" для розвитку (чому), я повинен турбуватися? [зачинено]


16

Я читав есе Пола Грема - Beating The Aasures (2003), і ось що він мав сказати:

Чим більше ІТ-аромату мали посадові інструкції, тим менш небезпечною була компанія. Найбезпечнішими видами були ті, хто бажав досвіду Oracle. Вам ніколи не довелося переживати про них. Ви також були в безпеці, якщо сказали, що хочуть розробників C ++ або Java. Якби вони хотіли, щоб програмісти Perl або Python, це було б трохи лякаюче - це починає звучати як компанія, де технічну сторону, принаймні, ведуть справжні хакери.

Тепер це датований нарис. Однак я не бачу, як використання незвичайної мови (C / C ++ / Java, C #) було б "менш небезпечним" . Якщо програмісти організації дуже добре володіють мовою розробки, вони повинні бути однаково вміли викручувати код пристойними темпами. Насправді, якщо ви користуєтесь невластивою мовою, проблеми з технічним обслуговуванням та вдосконаленням не вдарять вас в обличчя, оскільки не дуже багато програмістів будуть доступні, з часом?

Для виготовлення швидко забруднених систем я погоджуюся, що деякі мови дозволяють вам зняти відносно швидше, ніж інші. Але чи має реферат / коментар Пола Грехема в 2012 році і далі? Якщо стартап повинен використовувати для розробки типові ІТ- мови, то чому конкуренція повинна менше турбуватися?

Я не бачу, як сама мова має значення. IMHO - це досвід розробників з важливою мовою та наявністю фреймворків, щоб ви НУХАЛИ (не повторювали себе) не просто кодували певною мовою.

Чого я пропускаю? Чи означає це, що стартапам краще вибирати мови без аромату ІТ (навіть якщо розробники можуть бути вкрай вмілими до них)? Які (програмні) економічні / ринкові сили стоять за цим твердженням?

PS: "lingua obscura" не має шкодити почуттям кого-небудь :)


4
Розрив між товарними мовами та мовами влади все ще величезний. Ще можна перевершити Java або схожі темпи розвитку з, скажімо, Lisp в порядку величини.
SK-логіка

4
@ SK-логіка - будь-які дані для резервного копіювання?
Кандидат

2
@Nupul, майже немає офіційних досліджень продуктивності мов програмування, тому я можу покластися лише на анекдотичні докази та власний досвід. Я побачив лише пару паперів, спробую пізніше їх викопати. Що стосується конкретно Lisp, він відрізняється від інших мов тим, що його можна перетворити буквально на будь-яку мову дешево і легко. Таким чином, він поєднує в собі всі властивості та переваги всіх інших мов, тоді як мови, які не мають сили, є фіксованими та вузькими. Це може пояснити розрив у продуктивності.
SK-логіка

8
@ СК-логіка насправді? Незважаючи на аргументи LISPers протилежного, факт дуже мало цінних програм було побудовано за допомогою Lisp - з можливим виключенням Emacs--, і майже немає великих веб-сайтів - з виключенням ViaWeb в межах 1997 року. Отже, незважаючи на претензії на неймовірне підвищення продуктивності, більшість прихильників LISP - це всі розмови і прогулянки. У них є лише наукові дослідження (більше про дослідження та менше про якість виробництва), хобі-проекти та деякі внутрішні речі, які використовуються в кількох компаніях.
Hejazzman

2
@ SK-логіка Проблема полягає у відсутності статичного набору тексту, незважаючи на вашу здатність реалізовувати статично набрану мову у форматі Lisp.
БенджамінB

Відповіді:


16

Синдром інструментів - це симптом.

Коли компанія вибирає Oracle, це свідчить про:

  • Багато грошей кинути
  • Велика корпорація
  • Глибоко вкладена організаційна структура з багатьма шарами управління
  • Компанія керується "костюмами": або виконавчих типів, або маркетингу та продажів
  • Створює великі монолітні програмні продукти з гігантськими кодовими базами
  • Формальні процеси для всього

Коли компанія вибирає Python, це ознака:

  • Невелика молода компанія
  • Грошей на шкоду
  • Плоска ієрархія
  • Компанією керують програмісти
  • Робить невеликі одноцільові продукти з невеликими кодовими базами
  • Переважно неформальні процеси

Коли ці двоє зустрічаються, стратегія великої корпорації - уникнути ризиків, використовувати їх імпульс та випереджати конкурента. Стратегія малої конкуренції - спочатку перемогти конкуренцію на ринку, а потім продовжувати бути найкращим продуктом. Якщо маленька компанія вибирає правильні бої, вони можуть легко перемогти велику компанію, просто швидше та більш реагуючи, та скориставшись тенденцією великої компанії уникати ризиків.


1
Компанія, що використовує Oracle, ймовірно, все ще з'явиться через п'ять років!
Джеймс Андерсон

3
@JamesAnderson: так, залежно від ринку, так. Якщо вони намагаються стати наступним фейсбуком, мабуть, ні; якщо вони велика страхова компанія, то, ймовірно, так. Але тоді, якщо ви велика страхова компанія, запуск гаража навряд чи те, чого потрібно боятися.
tdammers

Так звучить, як я хочу працювати в магазині Python / Ruby / Scala / Clojure ... ммм. З огляду на мій досвід, місця, які окупилися, модернізуються, як правило, дуже повільно. Не знаю чому. Біль від переміщення однієї версії вперед часто легше, ніж переміщення декількох версій вперед. Платне програмне забезпечення "зазвичай" пропонує міграцію, але ця міграція зазвичай є версією до версії, що охоплює в більшості випадків.
Риг

25

Вибір незрозумілої мови свідчить про нечасту технічну впевненість у стартапі. Компанія, яка бажає відмовитися від загальної мудрості, може знати щось про розробку програмного забезпечення, чого не має більшість компаній. Знову ж таки, вони можуть бути просто бадьорими.


1
Дійсно, саме це має на увазі Грехем, що " це починає звучати як компанія, де технічну сторону, принаймні, ведуть справжні хакери " - компанія, де принаймні технологи можуть бути досить розумні, щоб бути для нього справжньою конкуренцією.
Росс Паттерсон

8
В наш час це, в основному, хитрість, бо "вибір незрозумілої мови" - це прихильність дня серед шахраїв та дилетантів.
Hejazzman

2
Це також вказує на те, що компанія дивиться всередину і зосереджена «як будувати», а не «що будувати». Такі компанії не залучають багатьох клієнтів.
Джеймс Андерсон

13

Я бачу коментарі PG більше щодо ставлення, ніж специфіки мови. Люди, які мають внутрішній ІТ-спосіб, захищають його. Вони використовують технології з низьким ризиком, мають процеси мінімізації ризику та приймають стратегію з низьким ризиком. Вони занадто зайняті, турбуючись про власний обід, щоб з'їсти ваш.

Люди, що знаходяться на межі кровотечі (python 2003), повинні турбуватися. Вони голодні. Вони ризикують. Вони інтелектуально цікаві. Той самий тип людей, який затримується пізно, вивчаючи нову захоплюючу мову, - це той тип, який може перетворити вашу галузь напередодні.


4
Звичайно, вони також можуть проковтнути один із тих ризиків, які вони взяли ...
Майкл Боргвардт

3
"" "Люди на краю кровоточивості (python 2003) турбуються про них. Вони голодні. Вони ризикують. Вони інтелектуально цікаві." "" - або вони є жертвами моди, використовуючи останню модну мову, і мають немає дотику до прагматики розвитку.
Hejazzman

2
Обидва вірні. Це гра з цифрами. Але прийміть крайнє протилежне. Іноді вибухи вибухають. Іноді їм це вдається. Але чи хотіли б ви коли-небудь побоюватися, що конкурент прийде за вами з COBOL?
MathAttack

13

Грем означає менш небезпечний для нього як для конкурента, не просто менш небезпечний. Його суть не в тому, що Java (або C ++ у 2003 році, або COBOL в 1980 році) менш небезпечна, а скоріше, що це нормально , і що існує велика ймовірність того, що компанії, які шукають такі навички, є просто середніми конкурентами. Але компанії, які шукають сильний талант у незрозумілих (або, правильніше, мовах з більшою потужністю і менш відомими), - це компанії, на які слід спостерігати.

І так, сьогодні це має ідеальний сенс. Це мало сенс задовго до того, як його написав Грем, ми просто не говорили про Яву в ті часи.


6
Якби тільки нам не довелося говорити про Java в ці дні.
DeadMG

8

Подивимося, які мови вперше були використані успішними стартапами. Ненауковий список, у верхній частині моєї голови. Правильне рандомізоване дослідження було б краще, якби хтось мав енергію.

  • Facebook: PHP
  • Обмін стакелями: C #
  • Google: Java та Python
  • Twitter: Ruby on Rails

Отже, мабуть, ми робимо висновок, що Facebook та Stackexchange не становили загрози для своїх конкурентів. Не дуже переконливо.


Подивимося, чи вірить це Пол Ґрем сьогодні. Він створив співпрацю YCominator, який фінансує стартапи. На домашній сторінці перераховані деякі їх успішні стартапи. Я пройшов їх по порядку, дуже швидко намагаючись дослідити мови, якими вони користувалися в перші дні.

Ну, є деякі ознаки переваги відносно незрозумілих і, мабуть, потужних мов. Але Flash, PHP та класичний ASP також перелічені.


Це твір . Це гіперболічний поштовх для відносно незрозумілої мови, яку він любить, з основними порадами, що стартапи повинні любити свою технологію і рухатися так швидко, як тільки можуть. Справедливо.


3
Reddit розпочався в Ліспі, але вони пішли і переписали всю справу на Python досить рано, тому що ніхто не міг зрозуміти Lisp.
Мейсон Уілер

Google використовує багато мов для багатьох різних речей. Вони використовують C ++ для більшості основних продуктів, таких як пошук, хром тощо
mike30

@Mike Питання стосується стартапів. Коли Google стартував, першими мовами, якими вони користувалися, були Java & Python.
MarkJ

6

Середній розробник використовує середні інструменти, оскільки не бачить цінності більш потужних:

"Поки наш гіпотетичний програміст Blub дивиться на континуум живлення, він знає, що дивиться вниз. Мови менш потужні, ніж Blub, очевидно, менш потужні, тому що їм не вистачає певної функції, до якої він звик. Але коли наш гіпотетичний програміст Blub дивиться в інший бік, вгору з континуумом живлення, він не розуміє, що шукає. Те, що він бачить, - просто дивні мови. Він, мабуть, вважає їх за еквівалентні Блубу по силі, але з усіма цими іншими волохатими речами також кинуті. Блуб для нього достатньо хороший, тому що він думає в Блубі ». - Пол Грем,« Побій середні » .

(Наголос мій.)

Чим потужніше мова, тим менше розробників збирається ним користуватися, і тим менш поширеним він буде. Популярність, таким чином, є хорошою метрикою того, наскільки сила мови від середньої. Чим більше незрозумілою є мова, тим більше шансів, що розробник, що використовує її, знає, що робить, і вибрав її з розумною причиною для своїх однолітків, що працюють на млинах - а кмітливий конкурент небезпечний.


3
Це зовсім не обов'язково вірно. Інструменти, реклама, наявні бібліотеки та якісні навчальні матеріали також можуть змінити популярність мови.
DeadMG

@DeadMG Ну, так, звичайно, експресивна сила - не єдиний фактор. Я думаю, я зробив мовчазне припущення, що всі мови в загальній обізнаності є приблизно нарівні з точки зору маркетингу, інструментів та документації; інакше їх взагалі не можна порівняти. Пекло, навіть особисті переваги мають багато спільного з цим. Якщо ви знаєте, що Haskell краще для якоїсь задачі, але вам просто подобається C, то ви можете зашифрувати щось на C для чистого чорта.
Джон Перді,

Я думаю, я зробив мовчазне припущення, що всі мови в загальній обізнаності є приблизно нарівні з точки зору маркетингу, інструментів та документації ... - І ви будете неправі робити це. Насправді неправильно, насправді.
Джим Г.

1
@JimG. Чи можете ви запропонувати конкретний приклад? Враховуючи індекс TIOBE, всі топ-10 та більшість топ-50 здаються порівнянними в цих областях. Крім того, люди чудово порівнюють особливості між мовами, які сильно відрізняються у виразній силі, так чому б не зробити те ж саме для інших аспектів?
Джон Перді,

5

Вибір мови важко для запуску. Безліч дуже хороших стартапів вибирають "загальні" мови для швидкості виходу на ринок, знайомства засновника та простоти майбутнього найму.

Вибір мови, що використовується менше, дає добрі знаки. У ньому сказано, що ви готові серйозно поставитися до розробки та намагаєтесь найняти спеціалізованих програмістів. Це лише сигнали, але запуск - це більше, ніж просто вибір мови.

Підсумок - це ваш вибір мови, його слід правильно оцінювати у вашому контексті. Наприклад, Facebook зробив нормально, використовуючи php, який, як правило, не вважається дуже масштабованою мовою


1
+1, якщо тільки заниження "Facebook зробив добре".
MarkJ

5

Запитайте найкращих та найгірших програмістів, яких ви знаєте, за якими критеріями вам подобається, які інші мови вони знають. Тепер напишіть оголошення про роботу, щоб залучити колишнього, і ви отримаєте свою відповідь. Навіть якщо у вашій програмі є C ++, ви отримаєте кращий клас програмістів, якщо наймете тих, хто знає мови, яких не вивчають у школі.


2
-1: А? Вибач, ти мене загубив.
Джим Г.

4

Ви можете турбуватися про дві різні речі, якщо конкурент використовує незвичну мову:

  • Перевага в продуктивності - Існують плюси і мінуси незвичайних мов, але якщо припустити, що конкуренція обрала для відповідної проблемної області, то вони, можливо, матимуть справжню перевагу в продуктивності. Наприклад, можливості метапрограмування в Lisps, ймовірно, дадуть вам реальну і істотну перевагу в будь-якому місці, де вам потрібно зробити значну кількість автоматичного генерування коду на ходу.
  • Культурна перевага - якщо компанія використовує незвичну мову, яка цікавить великих хакерів, вони, ймовірно, в змозі залучити та утримати великих хакерів. Компанії живуть і помирають за якістю своїх людей, тому, якщо це означає довгострокову перевагу талантів, то це може бути справді значним.

Обидва ці переваги можуть не застосовуватися в будь-якій ситуації. Наприклад, стартап міг легко прийняти мову "тому, що це круто", не по-справжньому замислюючись, чи це правильний вибір. Вони можуть легко зробити помилки при прийнятті на роботу. Вони легко можуть стріляти собі в ногу, зловживаючи "потужною" мовою.

Але якщо учасник вибирає незвичну мову та добре її використовує, то так, можливо, у вас може виникнути значна загроза для ваших рук.

Я думаю, що цей принцип є досить позачасовим і є таким же вірним, як і в 2003 році - конкретні мови та парадигми можуть з'являтися і залишатися, але ідея вибору потужної, експресивної мови, що відповідає вашому проблемному домену над загальною, безпечною загальною мовою ймовірно, завжди заслуговує серйозного розгляду.


0

Якщо ваші клієнти не заблоковані, то так . Ви повинні турбуватися про конкурентів, які використовують потужні мови.

Java, C #, C ++ є порівняно багатослівними та мають відносно повільний цикл редагування / тестування. Це обмежує швидкість, яку навіть найшвидші розробники можуть надати функції. Більш виразні мови з вбудованим потужним метапрограмуванням та нульовим часом компіляції дозволяють експертам-розробникам будувати функції якомога швидше. Якщо ви перебуваєте в змаганні за частку ринку, з величезною нагородою для переможця, є сенс найняти найкращих розробників, яких ви можете знайти, і користуватися будь-якою мовою дозволить їм пройти швидше. Ви можете турбуватися про масштабованість пізніше.


1
-1: C #, коли записано у бібліотеках Visual Studio, Resharper, LINQ та .NET 4.0 має повільні цикли редагування / тестування щодо інших мов?
Джим Г.

1
@Jim: не впевнений, що ваші компаратори, але порівняно з Ruby, Groovy, Clojure та іншими сучасними динамічними мовами, якими я користувався C #, безумовно, ближче до Java та C ++ з точки зору стилю розробки та швидкості ітерації. YMMV, але я не думаю, що ваш внесок є особливо заслуженим - характеристика ОП в цілому справедлива. Спробуйте "виразні мови", ви можете здивуватися, що можливо .....
mikera

@ Джим Г., так, порівняно зі звичайним Lisp, цикл редагування / тестування C # повільний. Ви не можете змінити працюючу систему. І вам доведеться написати набагато більше коду в C #, що ще більше сповільнює роботу.
SK-логіка

1
Ні, наприклад, Erlang дозволяє змінювати час виконання і є мовою компіляції.
Ріккі Кларксон,

2
@JimG., Звичайний Lisp - це компільована мова (ну більшість реалізацій є чистими компіляторами). Поступовий збірник дозволяє робити всі ті ж хитрощі, що й перекладачі, тоді як при окремому складенні вони навряд чи можливі.
SK-логіка
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.