LINUX.ORG.RU
ФорумTalks

Зачем придумывают всё новые языки-велосипеды?

 , ,


0

1

Зачем кому-то понадобился раст, когда есть адекватные и всем знакомые кресты? Зачем нужен элексир, когда есть шарпик, который знает каждая мартышка? Зачем изобретают го, вместо развития сишечки? Зачем нужна нода, когда есть питон, и зачем нужен питон, когда есть руби?

Даже не сам факт того, что изобретаются всё новые и новые языки, удручает. Пусть изобретают люди, коль нечем заняться. Но зачем это всё тянут в продакшон?

Профессия размывается, за всем нереально уследить. Раньше, с некоторой натяжкой, всё было более-менее понятно: пэхэпэшник пишет бэк под веб, на джаваскрипте ваяют фронт, на делфи пилят формы, сишники — лоулэвл, крестовики — молодцы вообще ребята. А сейчас одно и то же можно сделать сотней разных способов. И вроде бы это хорошо, но вот глядишь на вакансии и там: требуется знания языка X123 (от 5 лет), опыт работы с фреймворком Y456, и ещё тулзы Z789, Z798 и Z897.

Да чёрт возьми, а если я знаю X321 и Z888? Мы вам перезвоним. А потом такие, ко-ко-ко, на рынке дефицит нормальных девелоперов, а юные вайтишники опыть наклепали говна и сорвали дедлайн трижды.

Наболело.


Ответ на: комментарий от vertexua

Потому что в лиспе map принимает первым аргументом функцию, а остальными n коллекций. И типы аргументов этой функции должны соответствовать типам этих коллекций

То есть что-то вроде

map :: (A1 A2 A3 ... An -> b) (list A1) (list A2) ... (list An) -> (list b)

Корректно ни в одном языке не определяется. Хотя в Haskell может у меня просто опыта не хватило. В Typed Racket

> map
- : (All (c a b ...)
      (case->
       (-> (-> a c) (Pairof a (Listof a)) (Pairof c (Listof c)))
       (-> (-> a b ... b c) (Listof a) (Listof b) ... b (Listof c))))
То есть постулируется, что A2 A3 ... An совпадают.

monk ★★★★★
()
Ответ на: комментарий от vertexua

Я спрашиваю о узком аспекте - безопасность, предотвращение ошибок

На макросах пишется почти любой бондаж от системы типов до генерации кода по инвариантам. Потенциально.

А на практике защищает от ошибки копипаста. Там, где в других языках человек копипастит, в лиспе он пишет макрос-однострочник. И ошибиться в единственном аргументе макроса гораздо сложнее, чем в 15-м аргументе из 20 возможных при копипасте.

monk ★★★★★
()
Ответ на: комментарий от monk

А на практике защищает от ошибки копипаста.

Ахаха, вот это что-то новое )) Нет, не защищает. Часто делает хуже. Особенно если потом менять части копипасты в 10 местах

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от vertexua

zip возвращает пару. Если делать map . zip, то функция должна принимать не n аргументов, а 1 аргумент-кортеж.

Кстати, нормальный zip тоже не написать. Приходится писать zip3, zip4, zip5, zip6, zip7, zip8 (упс, такого в библиотеке уже нет)

Нормальный zip = (lambda r (apply map list r)) тоже неописуемый тип имеет.

monk ★★★★★
()
Ответ на: комментарий от vertexua

Особенно если потом менять части копипасты в 10 местах

Когда в 10 местах, то часто быстрее написать заново. Обычные функции, к слову, выполняют ту же роль, но многие паттерны функцией не оформить, а макросом запросто.

monk ★★★★★
()
Ответ на: комментарий от vertexua

Ты не написал ни один макрос в своей жизни, не говоря уже про eDSL - откуда ты со своим уровнем знаний, что-то можешь утверждать? Все эти сраные хиндли-милнеры реализуются на том же CL с бодуна за пару дней. Только это никому не надо, все пишут eDSL под задачу, которые соответственно ограничивают так как надо, а не через жопу и «в общем» как системы статических типов.

lovesan ★★
()
Ответ на: комментарий от lovesan

Ну вот где-то такой ответ я и ожидал, совсем оторваны от реальности реальной разработки софта. От человека написавшего наверное много макросов и даже eDSL у себя на локалхосте, но не участвовавшего ни в одном большом проекте. Максимум с одним корешем, третий уже не мог понять ничего в написаном

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от vertexua

Я то участвовал в проектах побольше чем твое самомнение, в том числе и в компиляторы лиспа патчи слал. За деньги же работал над охуенно огромной Security as a Service системой, вообще на эрланге написанной.

Твои же большие проекты видимо измеряются общим количеством букв в названиях классов на жабке(учитывая как там любят любую мелочь называть, немудрено что ты там считаешь большим).

lovesan ★★
()
Ответ на: комментарий от lovesan

Не хочу конечно меряться, но в компании где я работаю самый большой production на планете… Всего то навсего. Я работаю в серце инфраструктуры. У тебя больше? Как?

P.S. Странно что общаясь на техническую тему вполне, ты очень быстро перешел «а ты мудак». У вас так принято?

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от lovesan

Только это никому не надо

Вот это кстати интересное замечание, хорошо бы посмотреть как это скейлится на большие проекты.

Можно примеры известных лисп компаний, чтобы послушать например их доклады?

Пример по OCaml - Jane Street. Elm - NoRedInk. Что-то такое

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vertexua

Вот это кстати интересное замечание, хорошо бы посмотреть как это скейлится на большие проекты.

Нормально скейлится. Вот есть библиотека CFFI, это де-факто стандарт для вызова Си из лиспа. Это по сути один сплошной eDSL.

lovesan ★★
()
Ответ на: комментарий от vertexua

Можно примеры известных лисп компаний, чтобы послушать например их доклады?

Могу сам про это рассказать. На ближайшем spb fprog митапе(29 октября) - рассказываю про https://github.com/Lovesan/bike - там тоже свой DSL, могу вскользь упомянуть. Могу отдельный доклад сделать на следующий fprog.

lovesan ★★
()
Последнее исправление: lovesan (всего исправлений: 1)
Ответ на: комментарий от lovesan

Будет видео? С радостью посмотрел бы. Не знаю совпадает ли это с темой конференции, но было бы круто узнать о скейлинге практик по команде, поддерживаемости кода, какие были проблемы и как их решили

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)

Ты что в детстве не писал свою ос?

vasya_pupkin ★★★★★
()

Потому что индустрия не может всё время сидеть на лиспе - ей нужно постоянно что-то внедрять новое, модное, молодёжное.

ados ★★★★★
()
Ответ на: комментарий от vertexua

За счёт каких средств Лисп защищает от ошибок, совершаемых программистом?

А мало какой язык превосходит лисп по доступному арсеналу для построения абстракций, которые позволяют делать код проще.

ados ★★★★★
()
Последнее исправление: ados (всего исправлений: 1)
Ответ на: комментарий от ados

У лисперов «можно написать» - универсальная защита. Но написано ли? Куда не посмотришь в лисп коде Python-style динамическая говнятина. Ждёт часа чтобы упасть в продакшне от потерянного уровня вложения или типа.

Вот тут товарищ хвалится как с будуна Hindley Milner реализует. Только правильно ли? Более, того, раз говорит что не нужно (а очевидно нужно всем и всегда), то это говорит о популярных практиках программирования.

Это меня и наводит на мысль что это все язык одного программиста, раз типизация не нужна на практике и юнит-тесты спасут отца русской демократии.

А пока что господа, вы пахнете очередными «царями» с сишками, в которых абсолютная безошибочность лежит на плечах программиста. Не в рамках разумного, а абсолютно. У тебя баг? Ты дурак - убейся. Код людей с такой позицией мы не видели

В идеале хочу доклад на конфе нормальной большой компании - внедрили Common Lisp, все проблемы что вы ожидаете в нашем случае были не проблемами или были, но мы их решили вот так (например реализовали что-то конкретное). Там «сам дурак» не будет аргументом.

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)

адекватные и всем знакомые кресты?

Дурдом, ну.

t184256 ★★★★★
()
Ответ на: комментарий от next_time

Чтоб клиенту, фекалии куску, показать и не иметь в этом слишком много работы. А то если манечка разревется - чтоб не жалко выкинуть было

TooPar
()
Ответ на: комментарий от DELIRIUM

Всем знакомые кресты?)
Я как-то собеседовал сениора, который не знал про инициализацию {}. В 2016м вроде.

Моя любимая тема, на собеседовании, если я не хочу устраиваться в эту контору, а пришёл попрактиковаться проходить собеседования, — вывести из себя собеседующего, показывая ему, как он нихера не знает язык или технологию, на которую меня собеседует. И тут дело совсем не в том, что я крут, а том, что знать всё невозможно. И всегда будет куча мелочей, на которых можно подловить человека, если он не Кармак.

beaver
() автор топика
Ответ на: комментарий от Harald

Тебя что, с предыдущей работы попёрли?

Я за последний год работал пайтон-девелопером по разработке бэка для мобильного приложения, потом параллельно стал пилить магаз на пхп, потом устроился в контору фронтэндщиком, параллельно отмазавшись от двух предыдущих заказчиков, и в итоге, меня перевели в дотнетчики и сейчас я лабаю под WPF. Из всего вышеперечисленного я знаю только шарп. Нет, меня не попёрли, скорее наоборот всё норм сейчас более-менее, ну разве что кроме того момента, что я слабо доволен зарплатой и технологией, под которую лабаю.

beaver
() автор топика
Ответ на: комментарий от Deleted

Зачем придумывают всё новые технологии и устройства? Колеса и лопаты хватило бы навсегда.

Аналогия с технологиями паршивая. А вот аналогия с естесственными языками очень даже подошла бы: зачем нужны стопятьсот разных языков, зная которые, люди не понимают своих соседей, когда можно бы было всем разговаривать на одном, а свободное время посвятить чему-то более полезному или хотя бы приятному.

beaver
() автор топика
Ответ на: комментарий от monk

ну попробуй напиши на питоне

Питон, пффф...

var arr = new[] {"Freddie", "Herbie", "Ron", "Max", "Ringo"};
foreach (string name in arr.TakeWhile(x => x != "Max"))
    Console.WriteLine(name);
beaver
() автор топика

на С++ не написали еще не одной программы, которая бы не крашилась изредка :) Уж не говоря про то, что С++ дико усложнен ради сахарку.

перл, ява/пхп, нода / хаскел / го захватывали постепенно рынок потому что были простые для понимания.

ну а с поголовной мультипроцессорностью всем хочется этой мультипроцессорностью пользоваться, но никто не хочет разбираться с мьютексами, локами и прочими тредингами. Поэтому вместо того что б учить сложный язык и разбираться со сложными проблемами, пораждающие безконечные баги, народ написал/выбрал новые языки.

mrdeath ★★★★★
()
Ответ на: комментарий от mrdeath

добавлю немного из своего опыта. У меня было много проектов на php, пару на С++ и на node.js. Все программисты не ньюбы, все толковые парни. последний год мы пишем на go. так вот такого низкого количество багрепортов у меня не было никогда.

mrdeath ★★★★★
()
Ответ на: комментарий от mrdeath

на С++ не написали еще не одной программы, которая бы не крашилась изредка :)

тоже можно сказать про перл, нода, пхп

хаскел / го

а тут и первой части предложения достаточно

next_time ★★★★★
()
Ответ на: комментарий от Deleted

Лол, нет

Сейчас, с развитыми коммуникациями, как раз да. Например в России заметно, как за последние годы стали выравниваться местечковые «говоры».

Puzan ★★★★★
()
Ответ на: комментарий от Puzan

Сейчас, с развитыми коммуникациями, как раз да

Развитость коммуникаций ничего не решает. Максимум, что она меняет - диалекты и жаргоны выделяются по профессиональным/субкультурным/прочим критериям, а не по географическим.

Deleted
()
Ответ на: комментарий от Deleted

Развитость коммуникаций ничего не решает

Решает. Я уже привел пример с «географическими» диалектами.

Puzan ★★★★★
()
Ответ на: комментарий от Deleted

Попробуй читать комменты до конца

Однако, ты мастер бессмысленных комментариев.

Puzan ★★★★★
()
Ответ на: комментарий от TooPar

Ну как знать. Когда как. Pt_eu мне гораздо больше нравится на слух, чем Pt_br. А с испанским наоборот, у латиносов поприятнее произношение.

Hertz ★★★★★
()

Батхёрт безработного неосилятора.
/thread

crutch_master ★★★★★
()
Ответ на: комментарий от next_time

а) Проверка бизнес гипотез.

б) Формирование понимания нужен ли продукт рынку.

в) Создание алгоритмической базы приклада.

г) Технологическая база для пилота проекта.

Вообще можно много ещё чего ответить.

phoen ★★
()
Ответ на: комментарий от TooPar

Язык метрополии - отвратительное явление

Обоснуй что ли.

beaver
() автор топика
Ответ на: комментарий от Shlyapa

Вопрос был не про обход списка, а про управляемый goto.

Чтобы было нагляднее вот такой пример:

def g
  arr = [ "Freddie", "Herbie", "Ron", "Max", "Ringo" ]
  cc = callcc { |cc| cc }
  puts arr.shift
  return cc, arr.size
end

Использовать так (выведет элементы массива, после каждого укажет, сколько элементов осталось):

  c, size = g
  printf "В массиве осталось %s элементов", size
  c.call(c) if size > 1

monk ★★★★★
()
Ответ на: комментарий от phoen

а) Проверка бизнес гипотез.

б) Формирование понимания нужен ли продукт рынку.

если выпустить в продакшен сырое говно, то на рынке сформируется понимание, что такой продукт не нужен

в)Создание алгоритмической базы приклада.

это уже 50%+ готового продукта, поздняк будет на другой язык переходить

г) Технологическая база для пилота проекта.

и какой же профит с переписывания альфа версии на другой язык?

next_time ★★★★★
()
Ответ на: комментарий от TooPar

рабочий, который, собственно, продемонстрировать не стыдно - весь базовый функционал уже готов, осталось вычистить баги и допилить хотелки

next_time ★★★★★
()
Ответ на: комментарий от Nervous

У меня другой, я обычно прикрепляю цитату персонажа: With ★★★ (14.10.19 01:52:07) верунов в науку

tyakos ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.