Pull to refresh
29
0
Алексей Носков @alno

Пользователь

Send message
А что сподвигло вас перейти на битбакет?

Из отличий я знаю только:
* Mercurial
* Бесплатные закрытые репозитории

Что-то еще интересное есть? А то я как-то им не пользовался — на гитхабе все более чем устраивает, но вдруг у них есть мега-киллер-фичи о которых я не знаю =)
У вас же это HTML на S-выражениях =)

И судя по тому, что вы пишете про другие конструкции — вы на пути к реализации половины Лиспа.
Не пробовали на нем писать?
Мне интересно что за гео-вики и что именно делает андроид-приложение, если все это не тайна, конечно.
А напишите, с какими параметрами надо компилировать/запускать, хочется самому потестить.
Вот лог запуска одной из бенчмарк, там видны версия и опции (точнее, их отсутствие):
shootout.alioth.debian.org/u32/program.php?test=binarytrees&lang=csharp&id=2#log
Ну дайте ссылки хотя бы на эти тесты, и расскажите что именно там эффективнее.
Я не могу в куче мусора найти что-нибудь вменяемое пока.
Это был как пример.

Но вы на основе этого примера (который к OpenStreetMap не имеет никакого отношения) как-то делаете вывод относительно OpenStreetMap:
В связи с тем, что OpenStreetMap, Database Contents License (DbCL) и Оpen Database License (ODbL) не урегулировало данный вопрос

Как это?

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

И собственно к какому пункту из статьи 1225 ГК РФ относится контент OpenStreetMap, раз к нему применяется статья 1266?

Модификация по российскому законодательству (ст. 170 ГК РФ) возможна только в отношении ПО

По вашей ссылке: «Статья 170. Недействительность мнимой и притворной сделок». Где в ней о модификации?
Вообще можно написать Нилу. Однако, я не могу понять, что вы от него хотите, подробного описания использования функций? По-моему, это был чисто как вводный пример, хотя ответить на это сможет только сам Форд.


Я хочу, чтобы если в тексте перед примером говорится о каком-то объекте, то и в примере как-то фигурировал именно этот объект, иначе этот пример ничего не иллюстрирует.

Представьте себе статью о птицеводстве, например. Идет предложение об индейке, там написано «см. фото 8» и рядом на фото 8 фотография курицы. А что, тоже домашняя птица ведь?
Не знаю чем его формула яснее, но в коде ее использовать как-то странно =) Может это какой-то тонкий троллинг со стороны автора, не знаю.

Я посмотрел оригинал — у вас там есть одно отличие, но сути моих претензий к автору оно не меняет =)

У автора речь идет о «first-class functions», что вообще говоря не совсем равно функциям высшего порядка, но разница, как мне кажется, достаточно тонкая, потому что из одного как правило следует другое.

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

2. Да, может. И любая другая тоже может, что с этого? Где пример такого использования тогда уж?

Там написано, что если «у вас есть функции высшего порядка», то «вы можете написать… как это показано в Листинге 8».
Но то же самое можно написать и без функций высшего порядка.

Ну и кроме того, там говорится о функции, которая «выполняет адаптацию для вас, как это показано в Листинге 8». Но в указанном листинге нет ни одной функции, выполняющей адаптацию.

3. Это был сарказм. Я просто добавил еще чуть-чуть незначащей фигни в том же духе.

Он в своей формуле извлекает квадратный корень из w/2, предварительно возведя его в квадрат. Не кажется странным?

Вся его мегаформула может быть легко преобразована к: w / sqrt(2)
Конечно, это не так внушительно, но что поделаешь…
там нельзя использовать функцию в качествае параметра другой функции


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

2. А где это написано в тексте? И какая функция используется в качестве параметра в Листинге 8?

3. Мне кажется, что автор его слишком сильно упростил. Лучше считать как-нибудь так:

Math.sqrt(Math.pow((peg.getWidth()/Math.pow(Math.sqrt(2),2)), (Math.sin(Math.E * Math.PI) * Math.sin(Math.E * Math.PI) * 2 + Math.cos(Math.E * Math.PI) * Math.cos(Math.E * Math.PI) * Math.sqrt(4))) * 2)
Еще пара моментов относительно того же куска текста:

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


В первый раз встречаю такое определение.

которая выполняет адаптацию для вас, как это показано в Листинге 8

Ни одна из функций в Листинге 8 не выполняет адаптацию, насколько я могу судить.
Что-то от функциональной парадигмы ко второй части осталось только объявление одной функции…

Да и то:

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


Моя функция на C:

bool peg_fits(peg_t peg, hole_t hole) {
    peg.width / sqrt(2) <= hole.radius
}


Она тоже высшего порядка?

И еще:

Math.sqrt(Math.pow((peg.getWidth()/2), 2) * 2) — надеюсь, автор не пишет такого в реальном коде?

Я на руби пишу как раз.

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

То есть хороший язык, но не мой =)

И на руби под виндой тоже писать не стоит, насколько мне известно (сам я никогда даже не пробовал).
Затянувшаяся миграция с 1.8 на 1.9, GIL…

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

В Ruby есть ERB в стандартной библиотеке.

Работать с классами определенными вторым способом можно не только через Reflection.

Можно генерировать реализацию соответствующего интерфейса в рантайме и разницы в скорости по сравнению с реализацией интерфейса руками вы практически не заметите.

Кроме того, в Java 7 появилась такая штука как MethodHandle, которая работает пошустрее.
Ну лично я бы для этой конкретной задачи сделал бы обработчик на голом Rack, имхо тут и Синатра и не нужна.

Но как мне кажется, причины такого решения лежат уже не в каких-то преимуществах Ruby перед PHP, а во мне — у меня есть настроенная инфраструктура, достаточный опыт работы с Ruby и нежелание даже устанавливать PHP, а не то что писать на нем что-то.

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

Основное отличие в настройке сервера и деплое. Для PHP вы можете поставить апач из пакета, mod_php (если ничего еще не поменялось) и кинуть файл в нужную директорию.

В руби — поднять аппсервер, настроить проксирование, мониторить этот аппсервер.

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

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

Но даже если эти проблемы будут решены, я сомневаюсь, что в этой нише (маленьких задач на 1-2 страницы) Ruby будет более простым решением чем PHP. Равным — вполне возможно.

Information

Rating
Does not participate
Location
Калуга, Калужская обл., Россия
Date of birth
Registered
Activity