ФлеймФорумПрограммирование

Что читаемее, begin/end или {/}? Окончательный ответ на вопрос. (12 стр)

Страницы: 19 10 11 12 13 14 Следующая »
#165
20:38, 26 дек 2011

Соломон Страуструбер
> Да.
> Дельфины считают дельфинокод с двумя пробелами читабельным.
> Крестовики не считают крестокод с двумя проблеами читабельным.
> Всё остальное - субъектив и фанатизм.
Само понятие "читабельность" - субъективно. Я, например, не могу читать паскалоидный код с отступом в два пробела. Нельзя считать объективными критерии, основанные на читаемости.
Объективны те критерии, которые можно описать как "может"-"не может".
Дельфи не может объявлять переменных в коде.
Браинфак не может использовать имена переменных.
и т.д.

#166
20:41, 26 дек 2011

Соломон Страуструбер
> Никто бы не стал жертвовать 16 пикселами ради читабельности,
Не 16 пикселей, а 2 символа на каждый отступ.

> Дельфи прекрасно читается уже с двух пробелов.
Вы не поняли свой же аргумент. Дельфи не читается с четырех пробелов. Это уже объективно и не оспоришь.

> уже троллинг пошёл.
Он пошёл с нулевого поста этой темы. (:

#167
20:45, 26 дек 2011

-Eugene-
> Я, например, не могу читать паскалоидный код с отступом в два пробела.

А средний дельфин - может.
Надо смотреть, как оценивают свой код те, кто пишет на этом языке. Это достаточно объективно.

laMer007
> Не 16 пикселей, а 2 символа на каждый отступ.

Ну и что, это много?

laMer007
> Дельфи не читается с четырех пробелов.

Нет же.

#168
20:48, 26 дек 2011

Соломон Страуструбер
Хех. А я считаю параметром читаемости минимальную загроможденность кода буквами. Код - не сочинение, а алгоритм, в котором должно быть минимум текста. Для пометок существуют комментарии.

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

#169
20:57, 26 дек 2011

Соломон Страуструбер
> Кстати, а не получится ли так, что если заиграться с выводом типов, то
> окажется, что определить тип сможет лишь компилятор, а ИДЕ просто не сможет
> поспевать?
Может конечно...
В scala, например, вообще с поддержкой IDE не все так радужно. Много false-positive сообщений об ошибках, вывод не всегда правильно показывается, хотя в  Scala он сильно ограничен по сравнению с Haskell  или ML-подобными языками. Но scala вообще та еще песня, из-за кривизны JVM (каждая лямбда - отдельный класс), компилятор стартует секунд 5-6, нужно извращаться с sbt.
Может, под .NET F# или Nemerle получше (но я под винду не пишу ничего).

Там еше прикол такой - типы параметров методов там не выводятся, а вот возвращаемое значение - пожалуйста, из-за чего ВНЕЗАПНО может измениться контракт класса...

#170
21:14, 26 дек 2011

Соломон Страуструбер
Какого результата ты хочешь от этой темы?

#171
21:20, 26 дек 2011

-Eugene-
> Хех. А я считаю параметром читаемости минимальную загроможденность кода
> буквами. Код - не сочинение, а алгоритм, в котором должно быть минимум текста.
> Для пометок существуют комментарии.

Это уже субъектив, заточенный под конкретный язык. Я вывел количественный параметр, который не связан с синтаксисон напрямую, и который косвенно указывает, что есть что на самом деле.

Che@ter
> Какого результата ты хочешь от этой темы?

Чтобы висела. Чтобы давать ссылки на неё.
Ну высказываться тоже можно, правда, смысла нет, но пусть высказываются все кто хочет.

#172
21:23, 26 дек 2011

vladislav
> Может, под .NET F# или Nemerle получше (но я под винду не пишу ничего).
А причем тут винда?

> Там еше прикол такой - типы параметров методов там не выводятся
Scala такая унылая?

> Много false-positive сообщений об ошибках, вывод не всегда правильно показывается, хотя в  Scala он сильно ограничен
Печальные скалаИдеПроблемы...

Che@ter
> Какого результата ты хочешь от этой темы?
Как можно больший объём в страницах.

#173
21:25, 26 дек 2011

vladislav
> Там еше прикол такой - типы параметров методов там не выводятся,

В смысле?

> а вот
> возвращаемое значение - пожалуйста, из-за чего ВНЕЗАПНО может измениться
> контракт класса...

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

#174
21:40, 26 дек 2011

Соломон Страуструбер
> Ну, фича хорошая, но для ИДЕ проблемы.
А при чем тут IDE? В нормальных языках вообще все переменные\константы, параметры методов и результаты функции могут выводится, если нет желания указывать их явно.

> тип она возвращает, это понятно по выражению, слоящему после return
И хорошие IDE тут же выводят типы типы любых идентификаторов, если наводишь мышь.

Это уже даже С++ осилил:

template<class TParam>
void func(TParam param)//Тип параметра функции выводится автоматически и имеет тип TParam.
//Дельфи так не может? 
//Это конечно не по алгоритму Хиндли — Милнера, но и это не плохо.
{
  auto f= [=]()
  {
     return param;//Тип результата функтора выводится автоматическии имеет тип TParam.
     //Дельфи так не может?
  }
  auto var=f();//Тип переменной выводится автоматически и имеет тип TParam.
  // Дельфи так не может?
  //...
}
#175
21:44, 26 дек 2011

laMer007
> В нормальных языках вообще все переменные\константы, параметры методов и
> результаты функции могут выводится, если нет желания указывать их явно. И
> хорошие IDE тут же выводят типы типы любых идентификаторов, если наводишь мышь.

То есть на лету анализируют код? Круто, чё.

laMer007
> //Дельфи так не может?

Не, не может.

#176
22:10, 26 дек 2011

Соломон Страуструбер
> Чтобы висела. Чтобы давать ссылки на неё.
Хвастаться своим фейлом среди знакомых дельфинистов?

#177
22:14, 26 дек 2011

Соломон Страуструбер
> Не, не может.
как? если про вывод типов любых идентификаторов то конечно нет, большей части да, поставь уже делфи не 7-ую

#178
22:24, 26 дек 2011

Super_inoy
> большей части да, поставь уже делфи не 7-ую
А что именно выводить могут последние дельфи?
С++ может:
1)"Автовывод типов параметров" методов и функций (очевидно это слив в С++).
2)Автовывод типов переменных.
3)Автовывод типов результата функторов.
Вот что же могут вывести дельфи? Если можно, то с примерами кода.

#179
22:28, 26 дек 2011

laMer007
> > Может, под .NET F# или Nemerle получше (но я под винду не пишу ничего).
> А причем тут винда?

Ну, Mono - он совсем унылый...
Плюс у нас весь тулчейн - C++/java/python, scala сюда ложится, остальное - нет.

laMer007
> > Там еше прикол такой - типы параметров методов там не выводятся
> Scala такая унылая?
В принципе это нормально и даже наверное правильно, т.к. это все-таки не чисто функциональный язык, а скорре OO с сильным влиянием FP. А автоматический вывод параметров внешних методов довольно сильно мешает перегрузке и переопределению методов, например (очевидно, почему).
Другое дело, что там даже для локальных функций (и, например, приватных методов что есть по сути одно и тоже) механизм вывода довольно слабый. Например, классический fold-left из Haskell:

foldl :: (b -> a -> b) -> b -> [a] -> b

первым параметром идет функция, принимающая значения типа b и a и возвращающая значение типа b, потом идет начальное значение типа b и список типа a. В результате возвращается значение типа b.
Вызов

foldl (+) 0 [1,2,3,4]

успешно определит тип функции (+).
В scala возможности вывода намного хуже, там foldLeft определен примерно так:

trait LinearSeqOptimized[+A,...] {
  ...
  def foldLeft[B](z: B)(f: (B, A) => B): B = ...  
}

Это метод класса LinearSeqOptimized (что нормально), но на первое место вынесен параметр с начальным значением, причем вызов еще и каррированный.
При таком вызове:

List(1,2,3,4).foldLeft(0)(_ + _)

происходит следующее:
тип A нам известен из List(1,2,3,4). Дальше, List(1,2,3,4).foldLeft(0) возвращает частично-примененную функцию, которая принимает один параметр (функцию обработчик). И главное, что для нее уже известен тип B. Вот только в этом случае scala может нормально вывести типы аргументов лямбды...

Страницы: 19 10 11 12 13 14 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.