Состоялся релиз Ruby 3.4.0, динамического объектно-ориентированного языка программирования, сосредоточенного на высокой эффективности разработки программ и вобравшего в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp. Код проекта распространяется под лицензиями BSD ("2-clause BSDL") и "Ruby", которая ссылается на последний вариант лицензии GPL и совместима с GPLv3...Подробнее: https://www.opennet.me/opennews/art.shtml?num=62467
Мне нравится в Ruby только то, что он простой, код легко читать, и есть возможности для метапрограммирования!class Calculator
[:add, :subtract, :multiply, :divide].each do |operation|
define_method(operation) do |a, b|
case operation
when :add
a + b
when :subtract
a - b
when :multiply
a * b
when :divide
a / b
end
end
end
endcalc = Calculator.new
puts calc.add(5, 3) # => 8
puts calc.subtract(5, 3) # => 2
Ехал end через end.
Это делает 4 метода с case и это, конечно, позор. При этом напрямую написать было бы короче и проще для понимания.
Да человек просто немного поленился оптимизировать. Вот так лучше:class Calculator
[[:add, :+], [:subtract, :-], [:multiply, :*], [:divide, :/]].each do |operation|
define_method(operation[0]) { |a, b| a.send(operation[1], b) }
end
end
на Lua можно сделать это с помощью метатаблиц и с гораздо более читабельным кодом
Для незнающих lua привели бы этот код
Незнающим Lua, лучше почитать книжку про Lua. А вот показать, как расширяется Lua на С++, стоит:
```C++
#include <lua5.4/lua.hpp/** Функция предоставляемая модулем */
static int luasimd_query(lua_State* L)
{
// Получить параметр функции из Lua
auto x = luaL_checkinteger(L, 1);
// Передать результат в Lua
if (x == 0)
lua_pushinteger(L, 42);
else
lua_pushinteger(L, x);
// В Lua передается один параметр
return 1;
}/** Стартовая функция модуля */
extern "C" int luaopen_libsimd(lua_State* L)
{
// Структура с определением библиотечных функций для Lua
struct luaL_Reg function[] = {
{ "query", luasimd_query },
{ NULL, NULL },
};
// Регистрация функций в Lua
luaL_newlib(L, function);
// 1 - это указатель на вершину стека Lua, где лежит новая таблица с функциями модуля
return 1;
}
``````Lua
local simd = require("libsimd")io.write("query = ", tostring(simd.query(0)), "\n");
io.write("query = ", tostring(simd.query(1)), "\n");
io.write("query = ", tostring(simd.query(2)), "\n");
io.write("query = ", tostring(simd.query(3)), "\n");os.exit(true);
--[[
query = 42
query = 1
query = 2
query = 3
--]]
```
Подтверждаю легкость чтения. Года 3 назад не владея этим языком легко нашел в сорцах одного софта программы выключатель платных энтерпрайз-функций и разблокировал их.
Для этого не нужно читать и понимать код. Ты лучше почитай исходники гитлаба часик и перескажи его архитектуру.
Говорят, что Юкихиро Мацумото создал максимально читабельный язык. Мне кажется операторы "when, end" делают семантику языка громоздкой. Напомнило Паскаль.
>операторы "when, end" делают семантику языка громоздкойТочно семантику? Может, ты хотел сказать "синтаксис"?
ЛЛМ говорит, что там должно быть слово "семантика" :)
ЛЛМ наводит суету и неразбериху там, где не следовало бы.
забыл обернуть в теги "сарказм".
Ну пацаны, вы сами хотели этого я не виноват.Сема́нтика (от др.-греч. σημαντικός «обозначающий») — раздел лингвистики, изучающий смысловое значение единиц языка. Прочитайте Страуструпа он в своих трудах оперирует двумя терминами - семантика и синтаксис. Вам ПТУ-шникам его не понять, он птица высокого полёта.
Семантика показана как второй, самый верхний уровень, охватываемый прагматикой и включающий синтаксис.
> Мне кажется операторы "when, end" делают семантику языка громоздкой.Семантика "громоздкой" не бывает!
"смысловое значение единиц языка", то есть слова, несет конкретный (точный) смысл, если к слову языка применить понятие "семантически громоздкое", то смысл этого слова должен быть избыточный какой-то. Отсюда, если мы говорим, что операторы "when, end" "семантически громоздко", то оно должно означать, как я думаю, избыточность (то есть не одну функцию выполняют) функций этих самих операторов. Но ведь эти операторы выполняют необходимую, достаточную, конкретную функцию, в чем их избыточность ("громоздкость")?
> Семантика показана как второй, самый верхний уровень, охватываемый прагматикой и включающий синтаксис.
точно "прагматикой", может грамматикой?
>точно "прагматикой", может грамматикой?Да граматика. Из лингвистики "Теория языков программирования" взяла 4 термина: лексика, грамматика, семантика, синтаксис. Синтаксис является частью семантики.
nooby скидывал ссылкуhttps://cmcmsu.info/download/formal.grammars.and.languages.2...
на досуге к прочтению.
Максимально читабельный и понятный язык -- это кобол.
Максимально читабельный = болтливый (понятный с первого раза). Выразительный = короткий (зачастую непонятный с первого раза).Как найти ту золотую середину, чтобы язык имел одновременно два свойства читабельность и выразительность. Замена < end > символом < ; > делает язык выразительным не в ущерб читабельности.
> Замена < end > символом < ; >разница лишь в два лишних символа, ничего от этого не изменилось.
Для языка программирования важна краткость лексики. < ; > и < { } > имеет преимущество перед < begin > и < end >. Болтливось, как в естественном языке вредна, излишняя краткость, как в "математическом языке" тоже нехорошо. Мне кажется синтаксис у языка Си идеален. Си - это золотая середина. Java имеет крен в сторону болтливости.
Посмотри на OCaml, там всё тоже чётко, и он актуальный.
>Мне нравится в Ruby только то, что он простойне хочу расстраивать, но код выше не выглядит простым или понятным навскидку.
и зачем рассматривать калькуль? давайте лучше про какой-нибудь документооборот на 5-10 млн строк. какие плюсы у прыщ^Wруби?
> про какой-нибудь документооборот на 5-10 млн строк.что там должно быть на такое количество строк? Вероятно папка ноде_модулес.
Это руби то читабельный? Руби читабельный, только в момент, когда, допустим, некая функция только что написана и прошла тесты, когда всерьёз начинаешь его оптимизировать (а без этого всё совсем печально) - получается нечитабельные марсианские манускрипты.
Хм, мультиметоды в лиспах гораздо читабильней. стали не нужны рельсы - стал не нужен руби. я так думаю.
> стали не нужны рельсы - стал не нужен руби.[s]группа одного хита[/s] язык одного фреймворка.
В каком месте это легко читать? Как IDE должа находить такие методы?
> Как IDE должа находить такие методы?В динамически типизируемом языке? Только прогоном кода через все возможны пути выполнения, для того чтобы доказать, что в данном месте тип переменной будет Calculator и никакой другой.
Его ещё используют в проде или он изжил себя?
Нашёл 242 вакансии по запросу «ruby» на hh.
Вполне себе. В рф из крупных Сбер и Самолет используют.
В Сбере на нем легаси, которую никто не хочет переписывать. Как в Яндексе питон2.
Самокат, домклик, сбермаркет - неплохие такие легаси
сам придумал про легаси? или просто поворчать накинул на вентилятор - и сбежал?
Его никогда и не использовали в проде. Это язык одного фреймворка - рельсов, вот их использовали, и да, они себя изжили. А больше нигде его и не было.
Vagrant, например, написан на руби, живее всех живых.
Его уже переписывают на Go
ну на яблоке используют. В pod-файлах установочника сторонних модулей и корректировки любой возникающей ерудны
менеджер пакетов brew для макоси туда же
Загибай пальцы. Гитхаб, гитлаб, твитч Какая фигура у тебя на руке получилось?
Довольно ничтожная. Такая же фигура получалась 5 лет назад когда считали кто всё ещё на mercurial сидит. С тех пор и те три пальца разогнулись.
>Его ещё используют в проде или он изжил себя?Когда-то делал на Ruby систему интеграционных тестов для сложного продукта, написанного на C++. Просто из-за идиосинкразии к Питону. Ну и не на C++ же :).
Сейчас сделал бы на Rust. Писать так же легко и быстро, сопровождаемость несравненно выше.
> Ну и не на C++ же :)Почему, catch вполне себе неплох.
>на Rust. Писать так же легко и быстроHello, World!, и то, если зазубрить, как.
> В отличие от JIT-компилятора MJIT новый YJIT применяет версионирование базовых блоков (LBBV - Lazy Basic Block Versioning) вместо обработки методов целиком и реализован в форме интегрированного JIT-компилятора, написанного на языке Rust.Ага. Новость-то прочитай.
веселят меня такие заявления:
«вобравшего в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp»
если он так хорош, что ж он не так популярен? :-)
медленный очень
А как же 3х3х3 ?
> если он так хорош, что ж он не так популярен?С какого перепугу он не популярен, если он входит в топ 20 самых популярных языков в индустрии по разным топам. На гитхабе вообще топ-10.
Правильно, как Visual Basic. Куча никому не нужного легаси
> «вобравшего в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp»
> если он так хорош, что ж он не так популярен? :-)Так из этого никак не следует что он хорош. Тут сказано что он вобрал в себя лучшее из худших языков в истории.
> он вобрал в себя лучшее из худших языков в истории.Для серьезных систем с развитым параллелизмом ничего лучше ады пока нет.
Для числодробилок только фортран -- все остальное либо тормозит, либо не в состоянии обнаружить переполнения разрядной сетки.
Ну а что касается лиспа, то если программа делает то, что предусмотрено, то у нее практически нет ошибок. Именно поэтому вариант лиспа используется в автокаде -- приходит вчерашний студент в конструкторский отдел, ему в зубы дают мануал автолиспа на 30 страниц, и через месяц он уже в теме и пополняет библиотеку отдела.
Сейчас задам пару вопросов, без "рофлов" и потому что мне действительно интересно
1. Если ада это для параллелизма, почему на ней не пишут ядра ос, ведь планировщик/переключение контекста/создание процессов, все это ведь попадает под параллелизм? И можно ли в теории написать систему, которая будет такая же производительная как на си, но с преимуществами ады?
(Если что, про аду я знаю примерно ничего, но всегда был у меня лично какой то интерес к ней, все же это уже матерый, серьезный язык, как я слышал еще и используемый в жесткой военщине)
2. Про фортран тоже наслышан, но что такое "переполнение разрядной сетки"? Это про операции с фиксированной точкой?(целочисленная арифметика это понятно, там легко выйти за границу точности)
Но все равно код на фортране в конечном итоге исполняется на том же железе, использует те же инструкции, что и код на си, да даже компилировать можно тем же гцц, в чем тут прикол тогда? Иными словами, за счет чего получается компилировать те самые числодробилки, если у других все тормозит и переполняетя?Еще раз, не стеба ради, мне правда интересно
>почему на ней не пишут ядра оспишут целые ос.
см. ironclad: https://ironclad.nongnu.org/
звучит неплохо, еще и с MACом из коробки.>переполнение разрядной сетки
полагаю, имеется в виду переполнение числовых значений.
понятья, правда, не имею, что фортран с этим делает.
> 1. Если ада это для параллелизма, почему на ней не пишут ядраПишут таки. Но только если вся система на аде. Типа управления морскими судами и подводными лодками. Там где четко определеное количество программ, которые грузятся с ROM.
Для универсальных систем годится только си и ассемблер, поскольку ОС снаружи выглядит исключительно как набор системных вызовов и все остальное работает через них. А поскольку чуть менее, чем все написано исключительно на си, то нет никаких проблем им использовать системные вызовы, написанные на том же уровне. Если бы ОС была написана на аде, то все должно было бы быть написано на аде.
> 2. Про фортран тоже наслышан, но что такое "переполнение разрядной сетки"?Переносы тоже. Переполнение, это когда знаковое целое из-за смены бита в старшем разряде меняет знак. Транслятор с фортрана (не компилятор) издревле производит из операторов оптимизированные на уровне встроенной библиотеки промежуточного уровня досатточно большие блоки выполнения, контролируя результаты всех действий. В большом блоке в процессе оптимизации можно использовать коммутативный дистрибутивный и ассоциативный законы с тем, чтобы понизить вероятность выхода промежуточных результатов за пределы разрядной сетки.
С плавающей арифметкой такая же фигня -- преполнение и исчезновение порядка лечится перестановкой операций. Делать это ни си, ни си++ не умеют -- не те задачи стоят перед си, ну а си++ просто за компанию не имеет таких возможностей. Зато имеет наследование и полиморфизм -- источник 98% ошибок и проблем в рантайме.> Но все равно код на фортране в конечном итоге исполняется на том
> же железе, использует те же инструкции, что и код на си,
> да даже компилировать можно тем же гцц, в чем тут приколПрикол в том, что у фортрана другая парадигма использования памяти и другая парадигма выстраивания цепочки вычислений. Все заточено под арифметические вычисления, а не под операции с байтами и группами байт. У него даже подсистемы нормального вывода нет -- приходится пользоваться сишными библиотеками, благо язык компилируемый, т.е выхлоп -- объектный модуль. На самом деле фортран не компилируется, а транслируется в специальный промежуточный код, предназначенный для оптимизации производительности. Для оптимизации использования памяти, иногда и такое нужно, используется другой транслятор. Производительность, разумеется, при этом теряется. И только потом промежуточный код компилируется в объектный.
Когда речь идет о популярности языков программирования, это зависит от множества факторов, таких как история развития языка, его поддержка сообществом разработчиков, маркетинговая стратегия компании-разработчика, а также простота использования и обучения.Часто языки становятся популярными благодаря удачному стечению обстоятельств, а не только своим техническим характеристикам. Например, Java стала популярной благодаря поддержке корпораций (особенно Sun Microsystems), её кросс-платформенности и простоте использования для корпоративных приложений. Python стал популярным благодаря своей простоте, обширной библиотеке и активному сообществу, которое создает множество инструментов и библиотек под различные задачи.
Иногда язык может быть действительно хорошим с технической точки зрения, но не получить широкого распространения по разным причинам. Возможно, у него было недостаточно ресурсов для продвижения, либо он появился слишком поздно, когда рынок уже был занят другими языками. Также важную роль играет наличие документации, учебных материалов и поддержки со стороны крупных компаний.
Так что популярность языка – это сложная комбинация многих факторов, и иногда даже самый "идеальный" язык может остаться в тени других.
Ruby действительно является языком программирования, который сочетает в себе многие сильные стороны других языков, и его создатель Юкихиро Мацумото (Matz) ставил перед собой цель создать язык, который будет удобен и приятен в использовании. Однако, несмотря на свои достоинства, Ruby не достиг той же степени популярности, которую имеют, например, Python или Java.Вот несколько возможных причин этого:
Сложность экосистемы: Хотя сам язык Ruby довольно прост и интуитивно понятен, его экосистема, особенно связанная с веб-фреймворком Rails, может оказаться сложной для новичков. Rails предоставляет мощные инструменты для быстрой разработки, но требует глубокого понимания концепций и архитектуры, что может отпугнуть некоторых разработчиков.
Производительность: В сравнении с некоторыми другими языками, такими как Go или Rust, Ruby может уступать в производительности. Это делает его менее привлекательным для высоконагруженных систем или проектов, где важна скорость выполнения кода.
Исторические факторы: Популярность языка часто связана с тем, когда и как он появился на рынке. Python, например, получил широкое распространение еще в 1990-х годах и успел завоевать доверие большого числа разработчиков до того, как Ruby стал широко известен. К тому времени, когда Ruby начал активно использоваться, многие разработчики уже были привязаны к другим языкам.
Маркетинг и сообщество: Python имеет очень активное и разнообразное сообщество, поддерживающее его развитие и продвижение. У Ruby тоже есть сильное сообщество, но оно меньше и менее заметное на глобальном уровне. Кроме того, крупные корпорации, такие как Google, активно поддерживают Python, что способствует его популяризации.
Фокус на конкретных задачах: Ruby часто ассоциируется с веб-разработкой благодаря фреймворку Rails. Хотя это отличный инструмент для создания веб-приложений, он может ограничивать использование Ruby в других областях, таких как наука о данных, машинное обучение или системное программирование, где другие языки могут быть более подходящими.Таким образом, хотя Ruby обладает многими достоинствами, сочетание этих факторов привело к тому, что он не стал таким популярным, как некоторые другие языки. Тем не менее, он остается любимым инструментом для многих разработчиков и продолжает использоваться в различных проектах по всему миру.
Если вам настолько нечего сказать в защиту языка что вы постите бредни чатгпт, то в мёртности ruby можно не сомневаться. Господи, тут даже логики нет.> его создатель Юкихиро Мацумото (Matz) ставил перед собой цель создать язык, который будет удобен и приятен в использовании
Допустим, но цель не была достигнута.
> Однако, несмотря на свои достоинства
Которые какие? Их нет.
Для популярности нужны деньги, а не хорошесть.
Чем популярен Киркоров? Опра Уинфри? Джигурда? Вот-вот. :)
> Для популярности нужны деньги, а не хорошесть.
> Чем популярен Киркоров? Опра Уинфри? Джигурда? Вот-вот. :)Они популярны своими выступлениями. Не было бы выступлений, не было бы денег. Ты из топ 100 самых богатых людей планеты знаешь, сколько люлей? Десяток? Вот-вот. И только благодаря их публичности. Остальные не популярны, хотя на порядки богаче киркорова, опры и джигурды вместе взятых.
Впрочем, к языкам программирования это отношения не имеет никакого. Когда новый язык взлетает, никто за программирование на нём не платит. Всмысле совсем, даже вакансий нет. Не платит за миллионы постов где все делятся как кайфово на нём писать. Не платит за поддержку чатиков для новичков. Не платит за продвижение в кодбазы на древних языках. Не платит за то чтобы его выбрали самым любимым на stack overflow. Не знаю, может и платят каким-нибудь сраным евангелистам, только их же все презирают и умножают всё что они там вякают на -1.
Вот есть языки которые хотелось написать хорошими, но это не получилось. Влей теперь в них хоть миллиарды, писать на них всё равно никто не будет. А есть языки на которых пишут. Потому что хорошие. Больше нипочему.
> Впрочем, к языкам программирования это отношения не имеет никакого. Когда новый язык взлетает, никто за программирование на нём не платит. Всмысле совсем, даже вакансий нет.Хм.. а как это "язык взлетел" если даже вакансий нету?
> Не платит за миллионы постов где все делятся как кайфово на нём писать.
А если посты пишут не за деньги, а просто потому что хочется поделиться впечатлениями?
> Не платит за поддержку чатиков для новичков.
И чатик для новичков можно вести бесплатно.
Ты что не слышал про волонтерство? Тогда что ты забыл на этом сайте?> Не платит за продвижение в кодбазы на древних языках.
Правильно, за это платит работодатель.
Т.к его заколебали баги в старых языках или трудности с поиском программистов.> Не платит за то чтобы его выбрали самым любимым на stack overflow.
Ого, а вот и теория заговора.
Ну-ка просвети, сколько сейчас стоит, чтобы стать ʼсамым любимым на stack overflowʼ.> Не знаю, может и платят каким-нибудь сраным евангелистам, только их же все презирают и умножают всё что они там вякают на -1.
Твое мнение очень важно)
Хотя.. помню был один евангелист коммунизма - скакал по сцене в костюме парнокопытного.
Наверное квадробобер или как их там называют.> Вот есть языки которые хотелось написать хорошими, но это не получилось.
Угу, например СИшка (дыряшка в народе).
> Влей теперь в них хоть миллиарды, писать на них всё равно никто не будет. А есть языки на которых пишут. Потому что хорошие.
> Больше нипочему.Восхитительная чушь.
Ты выбрасываешь такое понятие как легаси. Как либы которые переписывать долго и дорого, даже если они фиговые.
Ты не учитываешь такое понятие как порог вхождения - если язык может осилить даже амеба, то он станет популярным - например пхп, сишка, жаваскрипт. И по этой же причине не стали популярными Ада или Фортран, тк там нужны мозги и знание математики.
Ты не учитываешь такое понятие как "язык написанный под задачу" - например Go, написан и поддерживается гуглом, гугл создает вакансии.
Не нужны для фортрана какие-то особые знания математики.
Я как тру адепт Сишечки, вот что скажу: язык обманчиво прост. У него лишь минимальный набор инструментов, только кажущийся простым и тупым, "смотри, любой дурак за неделю освоит".
Чтобы осознать всю мощь, нужно мыслить как инженер, нужно реально шарить в железе и архитектуре, потому что те же самые указатели не понять без понимания что такое память и что такое переменные, что это все либо регистры, либо данные в памяти по какому то адресу.
Си как раз прдуман под задачу, программировать железо. Тут не прокатят питоновские калькуляторы, вот на Си как раз мозги и нужныАда не стала популярной из за военщины
Фортран так и не вышел за пределы академ сообщества, потому что, внезапно, заточен на узкую задачу - писать калькуляторы для математиков, с таким же непонятным синтаксисом, как и матем.нотация(понятным только математиком)
Помню раньше разрабы на этом языке любили говорить, что программист дороже железа и что мол дешевле писать быстро на скриптухе, а потом железом в случае нехватки производительности закидать. Что вы скажете теперь?
Все правильно сказали. Или ты где-то нашел залежи дешёвых программистов?
Так джунов с чатгпт наперевес пруд пруди. Что, ruby для них слишком сложный?
У десятка тысяч настоящий обезьян случайно барабанящих по клавишам больше шансов написать что-то стоящее чем у этих джунов.
Так и есть. Кроме того, любой джун которого можно взять за еду через полгода научится программировать и захочет зарплату миддла, а уволить его будет ещё дороже, потому что возиться в его скриптне другой джун уже не сможет, а миддл согласится только с ЗП ещё в разы выше.
Да, а рубийный код всё это время пока собственник пытается экономить на программистах будет жрать свои 10х железа.
Вместо 10% процессорного времени будет есть 100%? Да на здоровья.
Админы локалхостов с 0.001 RPS нагрузки могут хоть на AVR'ках или эльбрусах запускать свои подкроватные ресурсы. Для сколь-либо серьёзного применения 100% процессорного времени совсем не годятся потому что должен быть запас на пиковые нагрузки и на то чтобы принять нагрузку соседних машинок при их выходе из строя или обслуживании. Поэтому если заложить 10x пики (в екоме, например, бывает больше во всякие чёрные пятницы и рекламные кампании) и N-1 избыточность, то это 2 сервера против 11 серверов. Аренда 9 серверов базового уровня это ~9*20k/мес = 380к (понятно что на деле будет просто 3-4 сервера помощнее, но это сравнимые деньги). Вполне хватит на миддла на настоящем ЯП, а не скриптятине из прошлого века.
Вот ты и прокололся. Для сколь-нибудь серьезного применения арендные сервера никто и не использует, покупают свои. А один мидл программист может тебе написать только привет мир.
> Для сколь-нибудь серьезного применения арендные сервера никто и не использует, покупают своиВ таком случае можешь пересчитать изжержки на стоимость железных серверов.
> А один мидл программист может тебе написать только привет мир.
В таком случае ruby-обезьяна не напишет и того))
> Для сколь-нибудь серьезного применения арендные сервера никто и не используетЯсно, серьёзнее офиса с шарой ты ничего не видел.
О, а вот и хайлоадеры из 2004 подъехали: облака, гибридные облака, эластичные вычисления - не, не слышали, давай х10 серверов на компенсацию пиков! Роль мидлвари в структуре затрат на фоне какого-нибудь клика-эластика-кафки-с-ETL'ем-мусквиля? Не, не считали - у нас в 2004 всё на железяках в-кладовке-под-лестницей - видишь - ставить уже некуда, а тут ты со своей рубЁй...
откуда в 2004 облака?
> откуда в 2004 облака?Так и я говорю, что "не слышали" и по привычке х10 core2duo с LA 100500 в кладовке держат)
Не держит, просто рассказывает как надо. Вы не привыкли к этому в интернете еще?
> по привычкене по привычке, а по слешдот-эффекту, "запас прочности"
>> по привычке
> не по привычке, а по слешдот-эффекту, "запас прочности"Юз ХПА, Люк! И ДДЫДОС протекшн! И ЦДН, и...
А впрочем, и так сойдет.
слешдот-эффект и ддыдос разные понятия, для борьбы с ддыдосом не покупают лишние 10х коры дуба в запас.
> слешдот-эффект и ддыдос разные понятия, для борьбы с ддыдосом не покупают лишние
> 10х коры дуба в запас.Ну, (D)DOS это не только "заливка трафиком", да? И таки в ряде случаев запас по мощности может и выручить - но в общем-и-целом - никто с вашим тезисом не спорит ).
Залежи дешевого железа не нашёл.
Ну это не в той стране искал.
10x расходов на железо в любой стране 10x.
Если ты завозишь по левому импорту через три страны, то нет.
Ещё раз, 10x расходов на железо в любой стране 10x. Читайте пока не поймёте что написано.
Ещё раз это копейки по сравнению с ценой программиста в нормальной стране. Нормальный программист стоит 100 000 долларов в год.
>Нормальный программист стоит 100 000 долларов в годДо тех пор, пока ему не найдут индуса на замену.
Желающих писать на питоне в разы больше, чем на Руби. У питона с производительностью всё хуже, чем у Руби. Значит проблем с железом в этом мире нет.
Зато в этой скоро дешёвых программистов будет пруд пруди. Только вот их всех рассадят по шаражкам.
И будут они просто по ходить на работу и пить чай. Такое уже проходили.
Да только что! Сколько там эффективные линуксоиды распилили на ядре? А сколько на саму разработку ушло? Вооот...
Кончилось высокомерие прогеров, теперь это просто расходник.
Просто на разработку ядра тратилось не само ядро. А компании кому интересно ядро.
> Ну это не в той стране искал.Явки, пароли в студию. Не томи.
Судя по тем зарплатам которые предлагаются, то дешёвых программистов должно быть полно.
Небось и сейчас есть питонисты с такими заявлениями.
Все с этим согласятся потому что это правда.
Но с железом, да, туговато. Бруски не на чем делать.
И тогда и сейчас это глупости. В реальной жизни крайне часто бывают проблемы с производительностью таких систем. 9 женщин не родят ребёнка за месяц, а увеличение железа не всегда приводит к увеличению производительности системы, а в ряде случаев может даже её замедлить, если плохо спроектирована переадресация данных/задач.
Всё просто. Существуют разные проекты. Если мы пишем движок для нейросети, то оборудование будет дороже программиста. Если пишем условный сервис для бекапа, который вызывается раз в день, то программист дороже оборудования.
> Всё просто. Существуют разные проекты. Если мы пишем движок для нейросети, то
> оборудование будет дороже программиста. Если пишем условный сервис для бекапа, который
> вызывается раз в день, то программист дороже оборудования.Ну мыж на опеннете, тут несколько другие критерии:
1) ЯП для утилиты, запускаемой раз в месяц (или вообще, при миграции какого-то софта), должен быть Ъ, иначе "нинужна!"
2) Если такой утилиты на Ъ ЯП нет (потому что никто не хочет писать кучу бойлерплейткода и самописных лисапедов), то утилита - "нинужна!"
Все эти требования к железу для ии - от того, что самый популярный фреймворк для ии написан на питоне. Куда думаете проыигачивается половина мощности?
Если хотите производительности, пишите ии сразу на си или асме
Одна проблема - бизнесу слишком дорого
Так и есть. Поэтому весь корпортивный софт продолжают писать на Java
> Так и есть. Поэтому весь корпортивный софт продолжают писать на JavaНу ты сравнил. Java быстрее руби будет.
Достаточно ли производитетельности YJIT чтобы написать прошивку для газонокосилки теперь?
Ну если не ставить задачу, чтоб газонокосилка гонялась за хозяином, то должно бы.
В своё время начал изучать этот язык потому, что понравилось высказывание его создателя:
"Человек создан для творчества, и я всегда знал, что люблю творить. Увы, я обделён талантом художника или музыканта. Зато умею писать программы. Я хочу, чтобы компьютер был моим слугой, а не господином, поэтому должен уметь быстро и эффективно объяснить ему, что делать."
Юкихиро Мацумото, создатель языка Ruby
Люди которые любят что-то из-за чужих высказываний странные.
Лучше не спрашивать творцов о их творениях.В большинстве случаев люди видят в творениях то - о чем творцы и не догадывались.
Квадрат - просто квадрат, пока подонок не вобьет в головы жертвам, что это искусство.
Поэтому человек, который акцентирует внимание на творчестве, там где за глаза хватает простого ремесла, скорее всего, хочет ввести людей в заблуждение и заработать на этом.
О, чуть выше, очевидно, один из подонков начал распинаться.Главное - ясно видеть суть, формулировать ее четко, без боязни "обидеть" мошенника.
> Квадрат - просто квадрат, пока подонок не вобьет в головы жертвам, что это искусство.Хм.. ты сейчас называешь "подонками" людей которые делают вещи, причем неплохие?
Интересно, какими достижениями может похвастаться такое б-ло как ты?> Поэтому человек, который акцентирует внимание на творчестве, там где за глаза хватает простого ремесла, скорее всего, хочет ввести людей в заблуждение и заработать на этом.
И много он заработал?
Ремесленники не могут придумать чего-то кардинально нового, для них достаточно повторять одно и то же годами. Причем деньги он за это так же зарабатывают, так что вторая часть твоего вис-ра вообще пук в лужу.
> Я хочу, чтобы компьютер был моим слугой, а не господином, поэтому должен уметь быстро и эффективно объяснить ему, что делать.Звучит как пользователь Алисы, а не программист.
Если представить, что женоподобных роботов вот вот и можно будет купить, фраза "пользователь Алисы" приобретает интересные краски)
> В своё время начал изучать этот язык потому, что понравилось высказывание его
> создателя:
> "Человек создан для творчества, и я всегда знал, что люблю творить. Увы,
> я обделён талантом художника или музыканта. Зато умею писать программы. Я
> хочу, чтобы компьютер был моим слугой, а не господином, поэтому должен
> уметь быстро и эффективно объяснить ему, что делать."
> Юкихиро Мацумото, создатель языка RubyНа самом деле руби популярность получил благодаря dhh и рельсам.
самый любимый и ахрененный язык, писал на нем прод код на замену шелл скриптов и ранбуки для Chef, сейчас иногда приходится что-то делать на Python так неудобно(
> самый любимый и ахрененный язык, писал на нем прод код на замену
> шелл скриптов и ранбуки для Chef, сейчас иногда приходится что-то делать
> на Python так неудобно(В чем нудобство?
В отвратительном синтаксисе? Не знаю как у анонима, а у меня лично питон вызывает рвотный рефлекс именно своим синтаксисом.
Попробуй перл, тебе понравится
>вобравшего в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp.Вобрать-то он вобрал, но недовобрал в себя лучшие черты языка программирования Rust! Поэтому я анонсирую разработку языка Rusty, который вобрал в себя лучшие черты Ruby и Rust!
Есть уже такое. Ты опоздал. https://github.com/HalidOdat/rusty-lang
> Есть уже такое. Ты опоздал. https://github.com/HalidOdat/rusty-langвесь код:
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
}
}
Что у нас точно есть, так это не ходящие по своим же ссылкам кексперты.
А я за лучшую комбинацию Python и Rust ;)
> ("it" подразумевает, что всегда имеется только один аргумент, а при указании "_1", не ясно, существует ли параметр "_2").Почему не ясно?
Конечно, существует: `{a:1, b:2, c:3}.each { puts _2 }`
А вот как это будет с `it`
Потому что вместо {a:1, b:2, c:3}.each скорее всего будет somename.each и сразу не очевидно массив somename или хэш.
>Почему не ясно?В нормальных языках аргументы и переменные объявляются явно
ocaml
fun i -> i + 1
haskell
\i -> i + 1
{a:1, b:2, c:3}.each { puts it[1] }
Вот бы ещё популярность всяких питонов и жабоскрипов упала бы до уровня руби и перла.
>"it" подразумевает, что всегда имеется только один аргумент, а при указании "_1", не ясно, существует ли параметр "_2"write only. А если взять функции первого класса, то вообще городить этот огород не понадобится. А проболема по тому, что в руби сделали скобочки не обязательными
>Продолжена оптимизация производительности JIT-компилятора YJITВместо того, чтобы сделать вывод типов по Хиндли-Милнеру, как в компилируемом хаскеле или окамле, они десятилетиями пытаются разогнать интерпретатор.
JS/TS точно никуда не денутся. Python может и вымереть по мере автоматизации задач машинного обучения и внедрение их везде в стандартные сервисы.Но вряд ли это поможет Ruby, хотя язык, безусловно, приятный.
>Но вряд ли это поможет RubyЯ не за руби, я против этих двух языков
Чем вам всем питон то не угодил? Отличный язык для скриптов
Ruby гораздо удобнее Python для сприптов. Хотя бы потому, что легко позволяет делать то, что называется domain specific embedded language. Но популярности Ruby это не помогло. Python - это про деньги/политику уч.курсов, а не про удобство.
Тем, что не соответствует своему же дзену.
>Явное лучше неявногоОбъявления переменных вообще нет, статической типизации тоже нет, вывода типов, и кучи других полезных вещей - тоже.
>Красивое лучше, чем уродливое.В питоне смешивается процедурный и ооп подходы, например len('str') и 'str'.islower(). Однострочные лямбды, __магические_методы__, отсутствие инкапсуляции, форматирование кода отступами, и куча других вещей
>Отличный язык для скриптовЦенность скриптов сильно преувеличена. Питон мог бы выгодно смотрется на фоне многословной джавы или си, тоже многословной и очень опасной, но куда лучше смотряться функциональные языки типа хасклея или окамла. Да даже типизация на уровне crystal.
Добавить сюда низкую произоводительность, и то, что питон просачивается в огромное количество проектов.
Из неявного (явное лучше неявного, ага) дзена питона - совместимость новых версий питона со старыми скриптами не гарантируется. Старое переписывается или больше не работает [как надо].
Ну шо там ? Очередной убийца с\с++ :D Ребята а помните Perl какой изящный синтаксис! Стихи писать можно!
Блин, а я всегда считал, что руби и перл одно и то же.
Тонко
Ruby on Perls :D