Из отличий я знаю только:
* Mercurial
* Бесплатные закрытые репозитории
Что-то еще интересное есть? А то я как-то им не пользовался — на гитхабе все более чем устраивает, но вдруг у них есть мега-киллер-фичи о которых я не знаю =)
Вообще можно написать Нилу. Однако, я не могу понять, что вы от него хотите, подробного описания использования функций? По-моему, это был чисто как вводный пример, хотя ответить на это сможет только сам Форд.
Я хочу, чтобы если в тексте перед примером говорится о каком-то объекте, то и в примере как-то фигурировал именно этот объект, иначе этот пример ничего не иллюстрирует.
Представьте себе статью о птицеводстве, например. Идет предложение об индейке, там написано «см. фото 8» и рядом на фото 8 фотография курицы. А что, тоже домашняя птица ведь?
Не знаю чем его формула яснее, но в коде ее использовать как-то странно =) Может это какой-то тонкий троллинг со стороны автора, не знаю.
Я посмотрел оригинал — у вас там есть одно отличие, но сути моих претензий к автору оно не меняет =)
У автора речь идет о «first-class functions», что вообще говоря не совсем равно функциям высшего порядка, но разница, как мне кажется, достаточно тонкая, потому что из одного как правило следует другое.
Но вот его пояснение в скобках похоже на какое-то странное понимание этих самых first-class functions. Ну то есть просто уметь объявлять функции еще не достаточно.
1. Прошлые части видел, но уже плохо помню, вполне верю. По крайней мере хоть в прошлой части и не дано определения, используется понятие вроде бы корректно. Но в этом тексте разъяснение в скобках никак не пересекается с понятием.
2. Да, может. И любая другая тоже может, что с этого? Где пример такого использования тогда уж?
Там написано, что если «у вас есть функции высшего порядка», то «вы можете написать… как это показано в Листинге 8».
Но то же самое можно написать и без функций высшего порядка.
Ну и кроме того, там говорится о функции, которая «выполняет адаптацию для вас, как это показано в Листинге 8». Но в указанном листинге нет ни одной функции, выполняющей адаптацию.
3. Это был сарказм. Я просто добавил еще чуть-чуть незначащей фигни в том же духе.
Он в своей формуле извлекает квадратный корень из w/2, предварительно возведя его в квадрат. Не кажется странным?
Вся его мегаформула может быть легко преобразована к: w / sqrt(2)
Конечно, это не так внушительно, но что поделаешь…
1. Я не знаю что автор имел в виду, я вижу только то, что написано в тексте. А функцией высшего порядка обычно называется нечто совсем не похожее на то, что написано у автора в указанном мной участке текста.
2. А где это написано в тексте? И какая функция используется в качестве параметра в Листинге 8?
3. Мне кажется, что автор его слишком сильно упростил. Лучше считать как-нибудь так:
Что-то от функциональной парадигмы ко второй части осталось только объявление одной функции…
Да и то:
у вас есть функции высшего порядка (функции, которые могут встречаться там же где и конструкции других языков, включая внешние классы), вы можете написать функцию преобразования, которая выполняет адаптацию для вас, как это показано в Листинге 8
Питон юзаю при необходиомсти, но вообще он как-то не пошел у меня: метапрограммирование там кажется на порядок менее естественным, то как применяется его философия меня часто приводит в замешательство, и прочие мелочи…
То есть хороший язык, но не мой =)
И на руби под виндой тоже писать не стоит, насколько мне известно (сам я никогда даже не пробовал).
Работать с классами определенными вторым способом можно не только через Reflection.
Можно генерировать реализацию соответствующего интерфейса в рантайме и разницы в скорости по сравнению с реализацией интерфейса руками вы практически не заметите.
Кроме того, в Java 7 появилась такая штука как MethodHandle, которая работает пошустрее.
Ну лично я бы для этой конкретной задачи сделал бы обработчик на голом Rack, имхо тут и Синатра и не нужна.
Но как мне кажется, причины такого решения лежат уже не в каких-то преимуществах Ruby перед PHP, а во мне — у меня есть настроенная инфраструктура, достаточный опыт работы с Ruby и нежелание даже устанавливать PHP, а не то что писать на нем что-то.
Но если взять «абстрактного разработчика», который не имеет личных предпочтений в выборе технологии для этой задачи, то, мне кажется, что PHP для этого абстрактного разработчика и задачи такого уровня может оказаться лучшим выбором.
Основное отличие в настройке сервера и деплое. Для PHP вы можете поставить апач из пакета, mod_php (если ничего еще не поменялось) и кинуть файл в нужную директорию.
В руби — поднять аппсервер, настроить проксирование, мониторить этот аппсервер.
Ну или проще, заюзать passenger, он упрощает на порядок процесс развертывания простых приложений, но его установка все-таки чуть менее тривиальна, чем апач+mod_php из пакетов.
Ну и наличие шаредхостингов с нормальной поддержкой руби пока не очень радует.
Но даже если эти проблемы будут решены, я сомневаюсь, что в этой нише (маленьких задач на 1-2 страницы) Ruby будет более простым решением чем PHP. Равным — вполне возможно.
Из отличий я знаю только:
* Mercurial
* Бесплатные закрытые репозитории
Что-то еще интересное есть? А то я как-то им не пользовался — на гитхабе все более чем устраивает, но вдруг у них есть мега-киллер-фичи о которых я не знаю =)
И судя по тому, что вы пишете про другие конструкции — вы на пути к реализации половины Лиспа.
Не пробовали на нем писать?
shootout.alioth.debian.org/u32/program.php?test=binarytrees&lang=csharp&id=2#log
Я не могу в куче мусора найти что-нибудь вменяемое пока.
Но вы на основе этого примера (который к OpenStreetMap не имеет никакого отношения) как-то делаете вывод относительно OpenStreetMap:
Как это?
Раз уж вы пишете об OpenStreetMap, то хотелось бы, чтобы вы показали какие проблемы возникают непосредственно с ее контентом.
И собственно к какому пункту из статьи 1225 ГК РФ относится контент OpenStreetMap, раз к нему применяется статья 1266?
По вашей ссылке: «Статья 170. Недействительность мнимой и притворной сделок». Где в ней о модификации?
Я хочу, чтобы если в тексте перед примером говорится о каком-то объекте, то и в примере как-то фигурировал именно этот объект, иначе этот пример ничего не иллюстрирует.
Представьте себе статью о птицеводстве, например. Идет предложение об индейке, там написано «см. фото 8» и рядом на фото 8 фотография курицы. А что, тоже домашняя птица ведь?
Я посмотрел оригинал — у вас там есть одно отличие, но сути моих претензий к автору оно не меняет =)
У автора речь идет о «first-class functions», что вообще говоря не совсем равно функциям высшего порядка, но разница, как мне кажется, достаточно тонкая, потому что из одного как правило следует другое.
Но вот его пояснение в скобках похоже на какое-то странное понимание этих самых first-class functions. Ну то есть просто уметь объявлять функции еще не достаточно.
2. Да, может. И любая другая тоже может, что с этого? Где пример такого использования тогда уж?
Там написано, что если «у вас есть функции высшего порядка», то «вы можете написать… как это показано в Листинге 8».
Но то же самое можно написать и без функций высшего порядка.
Ну и кроме того, там говорится о функции, которая «выполняет адаптацию для вас, как это показано в Листинге 8». Но в указанном листинге нет ни одной функции, выполняющей адаптацию.
3. Это был сарказм. Я просто добавил еще чуть-чуть незначащей фигни в том же духе.
Он в своей формуле извлекает квадратный корень из w/2, предварительно возведя его в квадрат. Не кажется странным?
Вся его мегаформула может быть легко преобразована к: w / sqrt(2)
Конечно, это не так внушительно, но что поделаешь…
Можно, но это к обсуждаемому тексту не относится.
2. А где это написано в тексте? И какая функция используется в качестве параметра в Листинге 8?
3. Мне кажется, что автор его слишком сильно упростил. Лучше считать как-нибудь так:
В первый раз встречаю такое определение.
Ни одна из функций в Листинге 8 не выполняет адаптацию, насколько я могу судить.
Да и то:
Моя функция на C:
Она тоже высшего порядка?
И еще:
Math.sqrt(Math.pow((peg.getWidth()/2), 2) * 2)
— надеюсь, автор не пишет такого в реальном коде?Питон юзаю при необходиомсти, но вообще он как-то не пошел у меня: метапрограммирование там кажется на порядок менее естественным, то как применяется его философия меня часто приводит в замешательство, и прочие мелочи…
То есть хороший язык, но не мой =)
И на руби под виндой тоже писать не стоит, насколько мне известно (сам я никогда даже не пробовал).
не знаю, о чем именно речь шла в пунктах «юникод» и «экспрешены», динамическая типизация меня не напрягает)
В Ruby есть ERB в стандартной библиотеке.
Можно генерировать реализацию соответствующего интерфейса в рантайме и разницы в скорости по сравнению с реализацией интерфейса руками вы практически не заметите.
Кроме того, в Java 7 появилась такая штука как MethodHandle, которая работает пошустрее.
Но как мне кажется, причины такого решения лежат уже не в каких-то преимуществах Ruby перед PHP, а во мне — у меня есть настроенная инфраструктура, достаточный опыт работы с Ruby и нежелание даже устанавливать PHP, а не то что писать на нем что-то.
Но если взять «абстрактного разработчика», который не имеет личных предпочтений в выборе технологии для этой задачи, то, мне кажется, что PHP для этого абстрактного разработчика и задачи такого уровня может оказаться лучшим выбором.
Основное отличие в настройке сервера и деплое. Для PHP вы можете поставить апач из пакета, mod_php (если ничего еще не поменялось) и кинуть файл в нужную директорию.
В руби — поднять аппсервер, настроить проксирование, мониторить этот аппсервер.
Ну или проще, заюзать passenger, он упрощает на порядок процесс развертывания простых приложений, но его установка все-таки чуть менее тривиальна, чем апач+mod_php из пакетов.
Ну и наличие шаредхостингов с нормальной поддержкой руби пока не очень радует.
Но даже если эти проблемы будут решены, я сомневаюсь, что в этой нише (маленьких задач на 1-2 страницы) Ruby будет более простым решением чем PHP. Равным — вполне возможно.