LINUX.ORG.RU

31 год назад создан язык программирования Ruby

 


0

3

23 февраля 1993 года появился Ruby — динамический, рефлективный, интерпретируемый высокоуровневый язык программирования. Язык обладает независимой от операционной системы реализацией многопоточности, сильной динамической типизацией, сборщиком мусора и многими другими возможностям. По особенностям синтаксиса он близок к языкам Perl и Eiffel, по объектно-ориентированному подходу — к Smalltalk.

Также некоторые черты языка взяты из Python, Lisp, Dylan и Клу. Кроссплатформенная реализация интерпретатора языка является полностью свободной.

★★

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

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

например, github, его выше гордо называли как написанный на руби, но по факту на пхп потому, что проект начал потреблять невменяемое количество ресурсов и испытывал серьезные проблемы с масштабированием. пилить его начинали модные смузи программисты, которые взяли модное руби в те года (2006-2008), но при увеличении популярности хостинга инфра росла несоразмерно и в какой-то момент на нее начали уходить миллионы долларов. они забашляли денег пхп разрабам и они начали все переписывать на нормальный язык.

фасебук также экспериментировал с руби, в итоге они сделали свой собственный форк пхп + компилятор пхп.

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

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

GitHub как был, так и остается написанным на Ruby. Они до сих пор выступают на конференциях рубишных, контрибьютят в язык и пишут свои библиотеки

Гитлаб - весь проект написан на руби и переписывать его на другой язык никто не собирается, ты можешь исходный код посмотреть…

От куда все эти выдумки?)

Да и раз уж на то пошло, что пхп, что руби, что питон - одинакового медленные языки

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

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

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

Ну я выше привел пример проектов.

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

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

Сколько смотрел разные топы языков по производительности, разных годов, так там в лидерах по тормознутости всегда были Ruby, Python, Java и им подобные.

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

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

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

Только не рассказывайте о тормознутости Ruby пользователям MotionRuby и TruffleRuby :)

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

причем руби вообще впереди планеты всей из более менее известных.

Это не правда. Ruby уже лет 7 по скорости не уступает JavaScript. Если использовать методы select, map, reduce и так далее, а не перемножать матрицы и не писать код как на Си с использованием while.

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

кто писал на руби выстрелившие проекты в последствии переписывали их на пхп.

На БЕЙСИК.

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

например, github, его выше гордо называли как написанный на руби, но по факту на пхп

Пруфцов бы.

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

На то это и интепретируемый высокоуровневый язык с богатым синтаксисом и динамической типизацией, чтоб тратить на исполнение больше времени, чем компилируемые языки с строгой типизацией и ограниченным синтаксисом.

Даже код на С++ с избыточным использованием шаблонов, при исполнении начинает требовать столько-же времени столкьо код на Java. Где-то в документах GNU про это написано.

lbvf50txt
()

Для меня Ruby стал языком-открытием благодаря спикерам.

Например Jim Weirich - он принес революционную на тот момент мысль, что оказывается программист может работать на двух языках одновременно. Сам будучи разработчиком на Java, он решал сопутсвующие вопросы по автоматизаци на Ruby.

lbvf50txt
()

Неплохой язык, сахару многовато как по мне, но это вкусовщина. А так, я ему применения для себя так и не смог найти. Пытался что-то вебное на рельсах делать, но забил. Рельсы в целом даже нравились. В качестве скриптовщины тоже не пошёл.

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

Самый медленный на данынй момент Perl

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

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

Ruby. https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/fannkuchredux-ruby-2.html

while i <= @n && @s[i] == 1
  @s[i] = i
  # Rotate 1<-...<-i+1.

  t = @p.delete_at(1)
  i += 1
  @p.insert(i, t)
end

В бенчмарках сполшь и рядом такие «перлы» руби писания, когда пишут «на Си», пото выдают это за Ruby. Не те задачи, не тот стиль, не те синтаксические конструкции.

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

Когда я услышал, что Perl медленный в своем классе я возмущался из уважения к языку. Потом погуглив выяснил что да. В любом случае эти тесты к практике не имеют ни какого отношения, сфера работы Perl не в соревновании на скорость исполнения кода. У данного инструмента другие сильные стороны. Точно така же как и у Ruby.

https://programming-language-benchmarks.vercel.app/perl-vs-ruby

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

Вы же понимаете, что дело не в JavaScript, а в перегруженной архитектуре приложения?

LOR, например, использует JavaScript, но не запрашивает такого объема ресурсов.

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

я думал что на чистом Perl и 0.4 others в виде щепотки кода на FASM :)

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

скажи это яп Mojo, пусть и MLIR вышел от создателей LLVM)

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

Если переделать ruby на статическую типизацию и компиляцию, то мы получим crystal.

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

Я так понимаю там солянка. Старый код на жабе, а новый на скале.

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

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

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

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

Добавлено:

Сам нашёл.

Each level of indentation is 2 spaces. Tabs are not used.

Можно закапывать.

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

Вакансий на Ruby практически нет, есть вакансие под фреймворк RubyOnRails. Рынок ограниченый.

Точно также нет вакансий на редактор Vim, но это не означает, что Vim не помогает в разработке проектов. Ruby как и Perl это часть внутреннего инструментария разработчика. Потому, что 100 строк кода на Ruby, заменяет 500 строк на другом языке.

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

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

Испльзование:

./gen.rb 10

Выдаст пароль в 10 символов из латинских букв обоих регистров и цифр.

tFSlaVFTkE

gen.rb:

#!/usr/bin/env ruby

# Usage:
# ./gen.rb 5
def symbol
  ((?a...?z).to_a + (?A..?Z).to_a + (?0..?9).to_a).sample
end

def get(len) 
  pass = ""
  len.times do 
    pass += symbol
  end
  pass
end

len = ARGV[0]
if !len 
    STDERR.puts "Len is empty."
else
  puts get(len.to_i)
end

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

Ну так себе аргумент — хэллоуворлды почти на всех современных ЯП писать легко и приятно, особенно скриптовых. Вот тебе для сравнения Elixir:

#!/usr/bin/env elixir

with [len] <- System.argv(),
     {len, ""} when len > 0 <- Integer.parse(len) do
  len
  |> :crypto.strong_rand_bytes()
  |> Base.url_encode64(padding: false)
  |> binary_part(0, len)
  |> IO.puts()

  System.stop()
else
  argv when is_list(argv) ->
    IO.puts(:stderr, "Usage: ./gen.exs LEN")

  _ ->
    IO.puts(:stderr, "Invalid length!")
end

System.stop(1)

Кода чуть меньше, зато есть:

  1. обработка невалидных аргументов командной строки (попробуй вызвать свой скрипт со следующими аргументами, например: -1, foobar);
  2. в случае ошибки запись в stderr и возврат подходящего кода;
  3. использование криптографически секьюрного генератора псевдослучайных чисел.

Но в любом случае особой разницы нет, так как это хэллоуворлд. И для большинства современных ЯП реализация будет сопоставимая.

PS. Это сильно неидиоматический Ruby-код:

def get(len) 
  pass = ""
  len.times do 
    pass += symbol
  end
  pass
end

Лучше так:

def get(len) = len.times.collect { symbol }.join

Или вообще

require 'securerandom'
def get(len) = SecureRandom.alphanumeric(len)
theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 1)

Именно из-за этого языка существуют все эти ваши pip install и npm install; классы и стрелочные функции в js; всякие symfony, laravel, django и пр. клоны RoR; тысячи клонов sinatra; typescript, dart (все помним, что первым был coffeescript). Вряд ли какой-либо язык повлиял на облик современной разработки так сильно, как это сделал Ruby и его сообщество.

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

Да, даже структура пакетов похожа, если почитать новости о запуске рубигем, то везде пишут, «наконец то завезли CPAN».

Typescript и Dart вообще никак с Ruby не связаны.

Symfony копирует Java Spring.

Django наверное вообще появился раньше чем RoR.

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

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

На PHP тоже не трудно

<?php
declare(strict_types=1);

function get_pwd(int $len): string
{
	$pwd='';
	$alphabet="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	$max=strlen($alphabet)-1;
	for($ind=1; $ind <= $len; $ind++ ){
		$pwd=$pwd . substr($alphabet,random_int(0,$max),1);
	}
	return $pwd;
}

$len=$argv[1]??null;
if( !$len ){
	fwrite(STDERR, "len is empty\n");
	exit(1);
}
if(! is_numeric($len) ){
	fwrite(STDERR, "len is not number\n");
	exit(1);
}
$len=$len+0;
if( !is_int($len) ){
	fwrite(STDERR, "len is not int\n");
	exit(1);
}
echo get_pwd($len),"\n";

Вызов:

$php test.php 12
mJf2bme0ALFy
Psilocybe ★★★★
()
Ответ на: комментарий от MOPKOBKA

наконец то завезли CPAN

Не знаю кто так говорит.

Typescript и Dart вообще никак с Ruby не связаны.

До coffeescript js никто не транслировал.

Java Spring

Что это?

Django наверное вообще появился раньше чем RoR.

нет

CodeIgniter

just another RoR clone

Laravel намного лучше

just another RoR clone

special-k ★★★
()
Ответ на: комментарий от MOPKOBKA

намного лучше

Оно все +- одинаковое (в 2024-то году), только с убогими ЯП. Проблема в том, что бэк теперь должен просто отдавать json, и что ORM - это антипатерн.

Но в свое время RoR просто взорвал мозг.

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

Оно все +- одинаковое

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

наконец то завезли CPAN

Не знаю кто так говорит.

Почти все сайты сообщающие о запуске в том далеком году.

До coffeescript js никто не транслировал.

TypeScript начал разрабатываться с ним в одно и тоже время.

Java Spring

Что это?

Гуглится.

Django наверное вообще появился раньше чем RoR.

нет

Проверил, да, Django был раньше.

CodeIgniter

just another RoR clone

Верим.

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

Проверил, да, Django был раньше.

Django - Initial release 21 July 2005; 18 years ago[2]

Ruby on Rails - Initial release August 2004; 19 years ago[1]

Проверил

ну-ну

special-k ★★★
()
Ответ на: комментарий от lbvf50txt
<?php 
if(empty($argv[1]))die('len is empty');else $len=$argv[1];
$alphabet=implode([...range('a','z'),...range('A','Z'),...range('0','9')]);
echo implode(array_map(fn()=>substr($alphabet,random_int(0,strlen($alphabet)-1),1),range(1,$len))),PHP_EOL;
MOPKOBKA ★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 2)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.