LINUX.ORG.RU

Предварительный релиз Ruby 1.9.0


0

0

Matz, автор языка Ruby, выпустил предварительный релиз Ruby 1.9.0, следующей версии языка программирования Ruby.

Дистрибутивы: ftp://ftp.ruby-lang.org/pub/ruby/1.9

Вот подборка с описанием отличий Ruby 1.9 от предшествующего Ruby 1.8: http://eigenclass.org/hiki/Changes+in...

>>> Подробности

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

> Перефразируем: табы НАДО настраивать, а пробелы - НЕ НАДО. Успокойтесь уже. Я тоже в детстве табами отступал. Потом вырос, и понял что четыре пробела - удобнее по совокупности параметров. Это стандарт. Придерживайтесь.

Еще раз для тех кто в танке: у разных людей _разные_ вкусы кто-то любит смотреть на код с отступами в 2 пробела, кто-то в 3, кто-то в 5 и тд и тп. Если код оформлен в виде табов, то его _отображение_ можно подстроить под любого программиста не изменяя при этом _корпоративный_ _стандарт_ (а не непойми какой PEP8 или как его там).

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

> Во-первых, в большинстве редакторов отступы по дефолту настроены в 8 пробелов - что неудобно.

тебе не удобно, а кому-то удобно

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

ага вот 2 куска одного и того же кода открытого в разных вимах (табы разную длину имеют):

#define BlABLABLA 0 #define BlABLABLA1 1

и второй

#define BlABLABLA 0 #define BlABLABLA1 1

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

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

ага 
вот 2 куска одного и того же кода открытого в разных вимах (табы разную длину имеют):

#define BlABLABLA  0
#define BlABLABLA1 1

и второй

#define BlABLABLA  0
#define BlABLABLA1     1


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

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

Яйца надо оторвать тебе за то что не следишь о чем шла речь. А речь шла о выравнивании _блоков_ кода. Так конечно можно каждый пробел в тексте заменить на таб, а потом радоваться почему все покорежилось.

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

>>А что, typedef в Яве так до сих пор и нет? O_O

>Нет, конечно, ибо нафиг не надо.

То есть раз за разом писать Map<String, String> - это Java-way? А обосновывается чем?

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

а так же оторвать тебе за то, что сам нихера не читаешь. речь шла о замене таба пробелами в редакторах.

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

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

Да, кстати.

С питоном тоже как-то попарился просто звиздец.

Если в начале блока стоит пробел перед табом, то отступ визуально одинаков

то есть

<Space><Tab> визуально выглядят так же как <Tab>.

Так что yk4ever прав.

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

>А по критерию читаемость/понятность какое решение для вас красивее?

Для меня они одинаковы. Но если взять средних программистов в средней конторе, то я думаю на первом куске кода у них возникнет вопрос: "А это чего ?". На втором куске кода таких вопросов возникнуть не должно.

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

>> С питоном тоже как-то попарился просто звиздец.
>> ...

Таких проблем ни когда не имел. Ибо прежде чем что-то делать надо сперва подумать...

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

а если код не твой?

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

а потом "ой, он что-то не работает".

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

>То есть раз за разом писать Map<String, String> - это Java-way? А обосновывается чем?

типо безопасный classic Java-way это
class DefineMapper implements Mapper {
     private Map mapper;
     public DefineMapper() {
          mapper = new Map();
     }
     public DefineMapper put(final String key, final String value) {
          mapper.put(key, value);
          return this;
     }
     public String[][] get() {
          ...
     }
     public String get(final String key) {
          return get(key, null);
     }
     public String get(final String key, final String default) {
          final String _tmp = (String)mapper.get(key)
          return (_tmp == null) ? default : _tmp;
     }
     ...
}

public Mapper getDefines().

Текущий Либо классика, либо тупая замена typedef.

public class DefineMapper extends HashMap<String, String> implements Mapper {
     public String[][] get() {
          ...
     }
     ... some helper methods
}

public Mapper getDefines().

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

>> точнее код твой, но в него залез один умник с табами? и это при том, что в заголовке было написано, чтоб пользовались 4 пробела.

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

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

> однако это не способствует читабельности кода

Во-во. Плюнул я тогда на это извращение и стал изучать лисп... ;)

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

> Еще раз для тех кто в танке: у разных людей _разные_ вкусы кто-то любит смотреть на код с отступами в 2 пробела, кто-то в 3, кто-то в 5 и тд и тп.

У разных людей _разные_ вкусы кто-то любит переходить улицу на красный свет, кто-то на жёлтый. Но выживают только те, кто переходит на зелёный.

Хватит уже капризничать. Есть стандарты. Они достаточно разумные. Их надо придерживаться, тогда всем будет хорошо.

> Если код оформлен в виде табов, то его _отображение_ можно подстроить под любого программиста

А вот исходники на Ruby часто попадаются со смешанными отступами: пробелами, но группы в 8 пробелов заменяются на таб. Вопрос: что будет с ними?

> не изменяя при этом _корпоративный_ _стандарт_ (а не непойми какой PEP8 или как его там).

А вы возьмите за стандарт PEP 8, для кода на Python - это логично.

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

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

> тебе не удобно, а кому-то удобно

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

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

> С питоном тоже как-то попарился просто звиздец. Если в начале блока стоит пробел перед табом, то отступ визуально одинаков

Гм. Если у вас смешаны пробелы с табами, питон обычно шлёт вас в пешее эротическое турне сразу.

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

>Все понятно с вами с Java - программистами. Любите вы многословность.

Мало слов выгодно в маленьких проектах/скриптах. Многословность она выгодна в крупных в которых много людей с разным уровнём подготовки.

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

>Боже мой, какой ужас :'( И это вместо 1 строки typedef o_O

Так и запишем, что такое "независимость по типам" и "прозрачность для людей с разным уровнем подготовки" не знает.

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

Программиста переспорить - что плетью воду сечь

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

>>Боже мой, какой ужас :'( И это вместо 1 строки typedef o_O

>Так и запишем, что такое "независимость по типам" и "прозрачность для людей с разным уровнем подготовки"

Вода - прозрачна, но под толстым слоем воды ничего не видно.

> не знает.

Тебе виднее.

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

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

/me тычет себя пальцем в грудь :D

Если же говорить не только о Питоне, то в Linux kernel тоже приняты отступы в 8 символов. Табами 8)

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

>И это вместо 1 строки typedef o_O

единственное где может пригодиться typedef в Java это замена простых типов (int на long, float на double и наоборот) по всему проекту. Но это достаточно редкое явление и реализуемое на уровне рефакторинга IDE. С таким ни разу не сталкивался.

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

>Вода - прозрачна, но под толстым слоем воды ничего не видно.

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

>Тебе виднее.

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

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

>> Во-во. Плюнул я тогда на это извращение и стал изучать лисп... ;)

Кстати вот уж где, а в лиспе без редактора заточенного под лисп трудно, подсчет скобок должен быть автоматизирован :) (это я в тему некошерных редакторов для питона)

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

> единственное где может пригодиться typedef в Java это замена простых типов (int на long, float на double и наоборот) по всему проекту

А для замены, например, Map<int, String> на Map<long, String> в пределах одного класса - пригодится не может, нет? И после этого говорят о "независимости по типам". Замени в своем примере Map на какй-нибудь другой контейнер, и посмотри на diff. Это называется "прозрачности для людей"?

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

>> Вода - прозрачна, но под толстым слоем воды ничего не видно.

> Ну если щеголять аналогиями, то прозрачность воды зависит от грязи :)

Даже дистиллированая вода в толстом слое практически непрозрачна.

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

> Мало слов выгодно в маленьких проектах/скриптах. Многословность она выгодна в крупных в которых много людей с разным уровнём подготовки.

Спорно все это. Но спорить мне с вами не охота.

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

>А для замены, например, Map<int, String> на Map<long, String> в пределах одного класса - пригодится не может, нет? И после этого >говорят о "независимости по типам". Замени в своем примере Map на какй-нибудь другой контейнер, и посмотри на diff. Это называется "прозрачности для людей"?

Начнём с того, что Map<int, String> не валидная конструкция. Во вторых, прозрачность здесь в том, поменяется функция put на put(Integer, String), что указывает что логика полностью поменялась и проект будет не компилябелен, пока не будет приведён к новой логике во всех местах использования. Если Логика не менялась, то всё будет работать без изменений. Это и есть имно "прозрачности для людей".

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

>Даже дистиллированая вода в толстом слое практически непрозрачна.

В Байкале дно видать очень на много :).

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

> А для замены, например, Map<int, String> на Map<long, String> в пределах одного класса - пригодится не может, нет? И после этого говорят о "независимости по типам". Замени в своем примере Map на какй-нибудь другой контейнер, и посмотри на diff. Это называется "прозрачности для людей"?

Это называется Ентерпризе девелопмент лангуаге :)

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

>Map<int, String> на Map<long, String>

Не совсем, наверно, понятно написал. Map<Integer, String> на Map<Long, String> указывает на изменение логики. Использование Map<Number, String> указывает, что использование Integer & Long & other не меняет локигу.

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

>>лангуаге

>Это чего ? +)

Это хреновый английский :)

PS: лангуаге - language

Devix
()

Мне жалко Java-прогеров. Столько дребедени они пишут, видимо, только за деньги. А после работы со скоростью света летят к своему домашнему компу, где установлен такой простой и удобный Python. А Java им снится в кошмарах, но в конце этих кошмаров приходит Ван Россум и побеждает зло...

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

>Мне жалко Java-прогеров. Столько дребедени они пишут, видимо, только за деньги. А после работы со скоростью света летят к своему домашнему компу, где установлен такой простой и удобный Python. А Java им снится в кошмарах, но в конце этих кошмаров приходит Ван Россум и побеждает зло...

Примерно так, только меняет Python на Perl, Ван Россум на Ларри. И " за деньги." на "из-за понимания, что на других языках будет мягко скажем не лучше, а тока хуже ".

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

> подсчет скобок должен быть автоматизирован :)

Если есть опыт и скрипт не более чем на десяток строк - можно и так обойтись. Но таки да - нужен. Но (сугубо личное ИМХО) мне оказалось легче "разбираться" со скобками, нежели с отступами :)

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

> А после работы со скоростью света летят к своему домашнему компу, где установлен такой простой и удобный Python.

Ну нафиг второй комплект библиотек осваивать. Есть же kawa :) - "JVM с человеческим лицом" (а не со звериным оскалом капитализма... :))

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

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

А сколько вы языков программирования знаете? И на сколько хорошо их знаете чтобы говорить так?

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

> Хватит уже капризничать. Есть стандарты. Они достаточно разумные. Их надо придерживаться, тогда всем будет хорошо.

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

Для своего проекта я могу сам написать свой стандарт кодирования, который как ни странно тоже будет являться стандартом.

> У разных людей _разные_ вкусы кто-то любит переходить улицу на красный свет, кто-то на жёлтый. Но выживают только те, кто переходит на зелёный.

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

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

Это не проблема.

Reset ★★★★★
()

О! Таки, вышел в свет.. ;-) отлично..

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

> для остальных разработчиков это не более чем рекомендация.

Так почему бы всем не придерживаться этой рекомендации?

> Для своего проекта я могу сам написать свой стандарт кодирования,

А ещё лучше - взять какой-нибудь чужой, уже популярный, и не валять дурака. PEAR (для PHP) велит использовать четыре пробела. PEP-8 рекомендует использовать четыре пробела. Зачем изобретать велосипед-то?

(А Руби, кстати, за свою дурацкую систему получает лучи ненависти.)

> Это не проблема.

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

Люди, поймите вы наконец: программирование - дисциплина инженерная. Вы представляете себе инженера, который будет жеманиться и ныть: "а я не хочу по ГОСТу чертить, у меня видите ли индивидуальность"? Он будет абсолютно правильным образом послан в задницу. В инженерной дисциплине надо опираться на распространённые стандарты, а не на желания своей левой задней ноги.

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

>>Даже дистиллированая вода в толстом слое практически непрозрачна.
>В Байкале дно видать очень на много :).
В Байкале много присадок. Вот вода и прозрачней :)

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

>а я не хочу по ГОСТу чертить, у меня видите ли индивидуальность

Это не ГОСТ, а всего лишь _рекомендация_. Меня и моих коллег пробелы не устраивают, почему я уже объяснил.

>В инженерной дисциплине надо опираться на распространённые стандарты, а не на желания своей левой задней ноги.

Это чушь собачья, надо опираться на тот стандарт, который принят в текущем проекте с которым работаешь.

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