The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Интервью с Юкихиро Мацумото, создателем языка Ruby, opennews (ok), 19-Мрт-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


41. "Интервью с Юкихиро Мацумото, создателем языка Ruby"  +4 +/
Сообщение от Аноним (39), 19-Мрт-21, 21:27 
Два года? А почему сразу не двадцать? Брехня какая-то. На самом деле на Ruby очень быстро писать. В том числе быстрее, чем на PHP и Python.
Ответить | Правка | К родителю #35 | Наверх | Cообщить модератору

42. "Интервью с Юкихиро Мацумото, создателем языка Ruby"  –6 +/
Сообщение от Аноним (35), 19-Мрт-21, 21:31 
не верь мне вообще без разницы. я просто привел пример программиста из ruby сообщества. про два года мне его начальник рассказал, а про полное не понимание http и вариантов хранения данных - уже я собеседуя этого уникума
Ответить | Правка | Наверх | Cообщить модератору

65. "Интервью с Юкихиро Мацумото, создателем языка Ruby"  +1 +/
Сообщение от n00by (ok), 20-Мрт-21, 10:38 
Ну я видел Мистера dd, он баш-программист операционных систем и предлагал одноимённой командой скопировать раздел в каталог. Но это же не значит, что bash непригоден для своих задач и админы должны его выкинуть, пересев на ассемблер.
Ответить | Правка | Наверх | Cообщить модератору

81. "Интервью с Юкихиро Мацумото, создателем языка Ruby"  –1 +/
Сообщение от Аноним (81), 20-Мрт-21, 17:18 
К чему этот поток слов? Командой dd действительно можно скопировать раздел в каталог, что не так?
Ответить | Правка | Наверх | Cообщить модератору

82. "Интервью с Юкихиро Мацумото, создателем языка Ruby"  +/
Сообщение от n00by (ok), 20-Мрт-21, 17:23 
> Командой dd действительно можно скопировать раздел в
> каталог

Ещё раз. Помедленнее.

Вы утверждаете, что следующая команда имеет смысл в GNU/Linux:

dd if=/dev/sda1 of=/home

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

Ответить | Правка | Наверх | Cообщить модератору

89. "Интервью с Юкихиро Мацумото, создателем языка Ruby"  +/
Сообщение от Аноним (89), 20-Мрт-21, 20:52 
dd if=/dev/sda1 of=/tmp/sda1.img bs=4096

этой командой я "скопировал раздел в каталог". в каталог tmp. в файл sda1.img.
рассказать как теперь его примонтировать?

Ответить | Правка | Наверх | Cообщить модератору

95. "Интервью с Юкихиро Мацумото, создателем языка Ruby"  +/
Сообщение от n00by (ok), 21-Мрт-21, 08:06 
> dd if=/dev/sda1 of=/tmp/sda1.img bs=4096
> этой командой я "скопировал раздел в каталог". в каталог tmp.

Этой командой вы применили примитивный приём демагогии "подмена предмета обсуждения".

> в файл sda1.img.

Вот именно. В файл. Не в каталог.

> рассказать как теперь его примонтировать?

Нет, Вы послушаете мой рассказ. Пользователь спросил: "у меня home на разделе диска, как сделать его не отдельным разделом, а каталогом?" Ему предложили скопировать файлы командой dd. Безо всяких mount.

Ответить | Правка | Наверх | Cообщить модератору

68. "Интервью с Юкихиро Мацумото, создателем языка Ruby"  +/
Сообщение от Аноним (58), 20-Мрт-21, 12:52 
а почему на Рубях быстрее, чем на Питоне? ;) Либ что ли больше? :)) Или меньше на клаве набирать? :P
Ответить | Правка | К родителю #41 | Наверх | Cообщить модератору

90. "Интервью с Юкихиро Мацумото, создателем языка Ruby"  +2 +/
Сообщение от Аноним (39), 20-Мрт-21, 22:16 
Трудно однозначно сказать. Просто подтверждено экспериментально. Либ больше? Да нет, скорее они лучше продуманы. Меньше на клаве набирать? Для _абсолютно_ такого же алгоритма - скорее нет. Для _абсолютно_ такого же, это важно. Питон здорово сокращает количество текста за счёт ненужности писать end или закрывающую фигурную скобку. С другой стороны, этот end или фигурную скобку тебе нормальный редактор или IDE поставит автоматически.

Зато Питон требует явный return. И явный this, что не только добавляет текста, ещё и усложняет рефакторинг. Вот, например, есть у меня несколько функций, который друг друга вызывают. И я решил их оформить в класс. В Руби я просто допишу "class MyClass ... end" вокруг тех функций. И проиндетирую. Да, и мне редактор поможет проиндентировать, потому что парсинг кода не зависит от whitespace. А в Питоне мне мучительно придётся дописывать для каждой функции this. И не только в заголовках функций, но и в их вызовах. А если что-то пропущу - то узнаю от это только в рантайме. Или, ну ладно, будем считать что мне редаткор подстветит. Питон - наверное, единственный язык, который требует явный this.

Возвращаясь к "_абсолютно_ такому же алгоритму". _Абсолютно_ такой же алгоритм как на Питоне, программист на Руби вряд ли напишет, а скорее всего напишет проще. Просто в Руби как-то всё продуманней. Гармоничная связка ФП и ООП. А в Питоне ФП загнано подальше, в угоду list/dict comprehension. При этом list/dict comprehension как таковое - это не плохо, это очень даже хороший инструмент, когда используется в рамках своей области применения. Но он не подразумевает chaining и вложенность. Если вложить один list comprehension в другой - будет очень нечитабельно. А если each block в другой each block - нормально.

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

9:00-13:30, 14:30 - 16:00, 16:30-19:00

должно получиться 8.5.

Я написал для этого однострочник на Руби:

ruby -rtime -e 'p STDIN.read.chomp.split(",").map { |period| a=period.split("-"); Time.parse(a[1]) - Time.parse(a[0]) }.sum / 3600

Потом решил, негоже его хранить в истории шелла, надо записать в файл и разбить на строки:

require 'time'

p STDIN.read.chomp.split(",").map { |period|
  start, finish = period.split("-", 2)
  Time.parse(finish) - Time.parse(start)
}.sum / 3600

Потом подумал, надо написать то же самое на Питон и сравнить, наверное получится так же легко, быстро и непринуждённо. Получилось вот такое вот:

import sys
from datetime import datetime, date, time, timedelta

def calc_duration(period):
  start_str, finish_str = period.split("-", 1)
  start_time  = time.fromisoformat(start_str.strip())
  finish_time = time.fromisoformat(finish_str.strip())
  return datetime.combine(date.min, finish_time) - datetime.combine(date.min, start_time)

periods = sys.stdin.read().rstrip().split(',')
durations = map(calc_duration, periods)
print(sum(durations, timedelta()))

Для варианта на Питоне нужен минимум Python 3.7. В более ранних Питонах не было функции datetime.time.fromisoformat(). То есть пару лет назад, до Python 3.7, мне ещё пришлось бы и парсингом повозиться. И ещё вариант на Питоне не поддерживает часы в одно разряде, например "9:30", надо добавлять второй разряд, "09:30". Ну да ладно, добавим.

Можно ли написать вариант на Питоне попроще? Попробуйте, с удовольствием посмотрю.

Почему код на Руби оказался короче и яснее? Я вижу здесь лучшую поддержку chaining и ФП, более удобные функции стандартной библиотеки. Будет ли так и для других задач? Для прям абсолютно всех задач - вряд ли, но по моему опыту, в большинстве случаев код на Руби пишется быстрее, проще и непринуждёнее.

Ответить | Правка | Наверх | Cообщить модератору

119. "Интервью с Юкихиро Мацумото, создателем языка Ruby"  –1 +/
Сообщение от Наноним (?), 24-Мрт-21, 13:15 
Скорость работы в сравнимых языках как Ruby и Python будет прежде всего определяться программистом: на сколько он владеет языком и IDE/редактором. Различия в синтаксисе не такие значительные, чтобы утверждать что однозначно написание на одном языке абсолютно всего быстрее чем на другом.
При этом не будем забывать что Ruby - ещё более тормозное говно чем Python, именно в исполнении кода. Удобство и красота языка в данном случае - скорее минус, потому что на этом тормозном говне программисты хотят писать.
Ответить | Правка | Наверх | Cообщить модератору

120. "Интервью с Юкихиро Мацумото, создателем языка Ruby"  +/
Сообщение от Аноним (39), 24-Мрт-21, 16:04 
Кто как обзывается - тот сам так называется
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру