Языки в качестве калькулятора
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 14.03.07 13:09
Оценка: +1
Курилка,

LCR>>Если же после некоторого копания и общения пользователь в итоге отворачивается от языка — это приближает язык, хотя бы на миллиметр, но к смерти.


К>Есть такое, противоположным мне кажется пример лисп-комьюнити — очень раздробленного и часто чуть ли не нападающего на новичков (особенно говорящих, что от скобок можно избавиться )


У меня тоже создалось такое ощущение. Хотя вот cl-user утверждает, что новички сами злобные буратины и имхо он ошибается

К>А J не занимает разве?


Ну я говорю о решении задач, тривиальных и не очень. А J у меня используется в качестве мегакалькулятора (чаще всего на ppc), когда надо что-то быстро вычислить. Например, сколько стоит скачать файл объёмом 531030896 байт
Автор: Lazy Cjow Rhrr
Дата: 13.03.07
:
   209.6 * 531030896 % 1024 ^ 3
103.66

Но частенько задачки "на пощщитать" выпадают не такие тривиальные и calc.exe уже не поможет вообще.

17.03.07 00:50: Ветка выделена из темы Каковы перспективы языка?
Автор: Ka3a4oK
Дата: 09.03.07
— VladD2
17.03.07 00:53: Перенесено модератором из 'Nemerle' — VladD2
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re: Языки в качестве калькулятора
От: cl-user  
Дата: 14.03.07 15:43
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

К>>Есть такое, противоположным мне кажется пример лисп-комьюнити — очень раздробленного и часто чуть ли не нападающего на новичков (особенно говорящих, что от скобок можно избавиться )


LCR>У меня тоже создалось такое ощущение. Хотя вот cl-user утверждает, что новички сами злобные буратины и имхо он ошибается


Ну может и ошибаюсь несколько — не знаю, ибо смотрю со своей колокольни.

По аналогии с лиспом — у Н дейсвительно очень мало информации на русском. Более того — её почти нет и на английском. Не ругайтесь — дайте развить мысль : языки .NET — это если не в первую очередь, то во вторую — сам .NET. Что получается — хочешь писать на Н — смотри доку по .NET, а там если и есть примеры — то только для C#. Самого же Н без дотнета действительно "всего ничего". Т.е. тем, кто знает дотнет — широкая дорога. Кто не знает — гуськом по свежевспаханному полю...

Что самое интересное — некоторые вот так и двигаются
Re: Языки в качестве калькулятора
От: _nn_  
Дата: 14.03.07 19:19
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

Оверквотинг удален.
LCR>Ну я говорю о решении задач, тривиальных и не очень. А J у меня используется в качестве мегакалькулятора...

<offtopic>
У меня вместо калькулятора Python. убедите в использовании J.
</offtopic>
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Языки в качестве калькулятора
От: ie Россия http://ziez.blogspot.com/
Дата: 15.03.07 05:45
Оценка:
Здравствуйте, _nn_, Вы писали:

LCR>>Но частенько задачки "на пощщитать" выпадают не такие тривиальные и calc.exe уже не поможет вообще.


__><offtopic>

__>У меня вместо калькулятора Python. убедите в использовании J.
__></offtopic>

Тут зависит от того, что тебе надо от калькулятора. Если посчитать сколько стоит скачать файл объёмом 531030896 байт, то, пожалуй, не имеет значение что тут использовать J или Python, или любой другой интерпритатор.
Однако задачки посложнее на J считать удобней, что не удивительно, это же математическая машина. Вот например формула по расчету остатка после выплаты подоходного налога с 75% от общей суммы (звали как-то на работу, они выплачивают только 25% подоходного, но я планировал с 75% оставшихся платить сам):
    rest =. -0.13*(-%&4)
    rest 10000
9025

Может с первого взгляда и непонятно (тут уж ничего не поделаешь, специфика J), зато кратко
Еще недавно считал стоимость машины в Новосибирске в зависимости от цены ее продажи на аукционе в Японии + таможня (которая зависила от года и объема) + доставка по Японии и по РФ. Короче полно сервисов, которые это делать умеют, но для этого надо на 5ок страниц зайти, на одной томожню посчитать, на другой доставку... Короче надоело, налабал на коленке. В принципе тут тоже все на любом языке все пишется, но на J у меня получилось 2 таблички с данными и 2 строчки кода
... << RSDN@Home 1.2.0 alpha rev. 0>>
Превратим окружающую нас среду в воскресенье.
Re[2]: Языки в качестве калькулятора
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 15.03.07 08:54
Оценка: 43 (8)
_nn_,

__><offtopic>

__>У меня вместо калькулятора Python. убедите в использовании J.
__></offtopic>

Я с товарищем иду в магазин, там мы затариваемся разной всячиной (он платит), однако некоторые вещи он не будет есть вообще, некоторые будет есть только он, а некоторые мы будем есть пополам. Значит я ему должен:
prices =. 47 58 29 22 32 55  5 55 73 58
own    =.  0  1  0  1  2  1  0  1  2  2  NB. 0 - мне не надо, 1 - пополам, 2 - всё моё
debt   =. -: @: (+/ .*)   NB. мой долг ему
own debt prices
   258


Иногда требуется повозиться с натуральными дробями. В J это делается напрямую:
   32r564 + 33r566
9181r79806


Разложение на простые числа — часто помогает, я таким образом запомнил мой код на карточке
   q: 123456
2 2 2 2 2 2 3 643


Ещё один тривиальный пример — как только появляется что-то типа циклов на массивах, J начинает рулить конкретно. Среднее арифметическое:
   mean =. +/ % #
     mean 1 2 3 4 5 6
3.5
   rev=: |.&.;:
   rev 'something like rsdn'
rsdn like something


Вот примерно поэтому и нравится. Два крючка, два значка, и посередине скобочки — вот и готова функция Здесь и сейчас, и делает что надо.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[3]: Языки в качестве калькулятора
От: _nn_  
Дата: 16.03.07 16:00
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

<skip>

LCR>Вот примерно поэтому и нравится. Два крючка, два значка, и посередине скобочки — вот и готова функция Здесь и сейчас, и делает что надо.


Симпатия к J у меня есть, но не я знаю если можно полностью заменить калькулятор питона
Еще один вопрос про J: есть ли поддержка в конвертация десятичная <=> шестандцатеричная система счисления, а также кодировка строк ?
hex(123)
int("23", 16)
"ab".encode("base-64")


Спасибо.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[11]: Каковы перспективы языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.03.07 21:51
Оценка:
Здравствуйте, _nn_, Вы писали:

Предупреждение за оверквотиг.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Языки в качестве калькулятора
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 17.03.07 09:20
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Вот примерно поэтому и нравится. Два крючка, два значка, и посередине скобочки — вот и готова функция Здесь и сейчас, и делает что надо.


Попробовал — понравилось

Раньше у меня в этой роли выстпали Mathcad, Matlab и Maple (в разной последовательности). Там, конечно, всё потяжеловесней. Самым удобным был Mathcad. В остальных постоянно забывались то синтаксис, то функции . Да и платные они все.
Re[4]: Языки в качестве калькулятора
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 17.03.07 09:41
Оценка: 19 (3)
_nn_,

LCR>>Вот примерно поэтому и нравится. Два крючка, два значка, и посередине скобочки — вот и готова функция Здесь и сейчас, и делает что надо.


__>Еще один вопрос про J: есть ли поддержка в конвертация десятичная <=> шестандцатеричная система счисления, а также кодировка строк ?


__>hex(123)
__>int("23", 16)
__>"ab".encode("base-64")


Все эти функции давно украдены до нас, то есть написаны и входят в стандартную библиотеку
   load 'system/main/convert.ijs'
   hfd 1234    NB. hex from decimal
4D2
   dfh 'abcd'  NB. decimal from hex
43981

   load 'system/packages/misc/base64.ijs'
   tobase64 'ab'
YWI=
   frombase64 'YWI='
ab


Хотя если бы не было, то наверное написать свои конвертеры вряд ли было бы проблемой, во всяком случае пресловутый base64.ijs не бог весть какой сложный:
BASE64=: (a.{~ ,(a.i.'Aa') +/i.26),'0123456789+/'
NB. или можно тупо BASE64=: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'

tobase64=: 3 : 0
    res=. BASE64 {~ #. _6 [\ , (8#2) #: a. i. y
    res, (0 2 1 i. 3 | # y) # '='
)

frombase64=: 3 : 0
    pad=. _2 >. (y i. '=') - #y
    pad }. a. {~ #. _8 [\ , (6#2) #: BASE64 i. y
)
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[3]: Языки в качестве калькулятора
От: Quintanar Россия  
Дата: 17.03.07 15:26
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Я с товарищем иду в магазин, там мы затариваемся разной всячиной (он платит), однако некоторые вещи он не будет есть вообще, некоторые будет есть только он, а некоторые мы будем есть пополам. Значит я ему должен:

LCR>
LCR>prices =. 47 58 29 22 32 55  5 55 73 58
LCR>own    =.  0  1  0  1  2  1  0  1  2  2  NB. 0 - мне не надо, 1 - пополам, 2 - всё моё
LCR>debt   =. -: @: (+/ .*)   NB. мой долг ему
LCR>own debt prices
LCR>   258
LCR>


А в q так:
debt:{+/x*y%2}
debt[prices;own]


Я теперь хочу kdb в качестве домашней базы данных
Re[4]: Языки в качестве калькулятора
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 19.03.07 05:54
Оценка:
Quintanar,

Q>А в q так:

Q>
Q>debt:{+/x*y%2}
Q>debt[prices;own]
Q>


Тоже нормально.

Q>Я теперь хочу kdb в качестве домашней базы данных


Как там с лицензией? А с портом под КПК?
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[4]: Языки в качестве калькулятора
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 19.03.07 05:54
Оценка:
Nuzhny,

N>Попробовал — понравилось


N>Раньше у меня в этой роли выстпали Mathcad, Matlab и Maple (в разной последовательности). Там, конечно, всё потяжеловесней. Самым удобным был Mathcad. В остальных постоянно забывались то синтаксис, то функции . Да и платные они все.


Maple мне тоже нравится. Правда с внутренним языком они малость переборщили в том смысле, что язык видимо делался "от сердца", поэтому некоторые фичи не совсем обычные и гхм.. немного кривоватые (ну например, protect-unprotect, evaluation rules). Но это ерунда по сравнению с потрясной библиотекой Maple и тем, что Maple вовсе небесплатный.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[5]: Языки в качестве калькулятора
От: Quintanar Россия  
Дата: 19.03.07 13:03
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Как там с лицензией? А с портом под КПК?


А как ты думаешь?
Может интерпретатор напишу, благо мегапроизводительность не нужна.
Re[6]: Языки в качестве калькулятора
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 19.03.07 13:25
Оценка:
Quintanar,

LCR>>Как там с лицензией? А с портом под КПК?

Q>А как ты думаешь?
Да риторические были вопросы...

Q>Может интерпретатор напишу, благо мегапроизводительность не нужна.

Ну удачи и успехов
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[3]: Языки в качестве калькулятора
От: Mirrorer  
Дата: 22.03.07 12:54
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>
LCR>debt   =. -: @: (+/ .*)   NB. мой долг ему
LCR>


А вот такой вопрос тацит(д?)ное представление оно при изучении J в подкорке откладывается ?
Вернее не в тацитном представлении вопрос. А в том что к чему применяется... И допустим как в тацитной форме отличить глагол в монадной форме от диадной ?
"Если Вы отличаетесь от меня, то это ничуть мне не вредит — Вы делаете меня богаче". Экзюпери
Re[4]: Языки в качестве калькулятора
От: Mikl Kurkov Россия  
Дата: 23.03.07 08:21
Оценка: 7 (1)
Здравствуйте, Mirrorer, Вы писали:

M>...

M>А вот такой вопрос тацит(д?)ное представление оно при изучении J в подкорке откладывается ?
M>Вернее не в тацитном представлении вопрос. А в том что к чему применяется... И допустим как в тацитной форме отличить глагол в монадной форме от диадной ?

Да все нормально откладывается. При условии регулярного использования языка. Ну это и для естественного языка справедливо.
Вилка (fork) интуитивно понятна даже новичку. Ну что может быть естественнее чем (+/ % #) для вычисления среднего. Хук (hook) немного сложнее но тоже очень быстро привыкаешь к таким идиомам как фильтрация (#~ predicat). Что касается валентности, то для вилки она соответствует наименьшей валентности составляющих ее глаголов, а хук всегда амбивалентен, так как hook y = y hook y.

--
Mikl
Re: Языки в качестве калькулятора
От: demi США  
Дата: 26.03.07 14:03
Оценка: 8 (1)
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Курилка,

LCR>Но частенько задачки "на пощщитать" выпадают не такие тривиальные и calc.exe уже не поможет вообще.
powercalc того ms. Может очень много, в тч графики строить и еденицы измерения конвертировать. Функции запоминает и т.д.
Не стыдно попасть в дерьмо, стыдно в нём остаться!
Re[2]: Языки в качестве калькулятора
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 27.04.07 03:45
Оценка:
demi,

LCR>>Но частенько задачки "на пощщитать" выпадают не такие тривиальные и calc.exe уже не поможет вообще.


D>powercalc того ms. Может очень много, в тч графики строить и еденицы измерения конвертировать. Функции запоминает и т.д.


Может не очень много Да, действительно, более навороченная по сравнению с обычным calc, но по-прежнему игрушка (power toy ^_^).

Недостатков много:
++ если в J можно работать с любыми вычислимыми функциями, то в кулькуляторе — только с теми, которые являются аналитическими и которые можно записать в одну (:??? строчку.
++ Отсутствует даже элементарная операция округления.
++ Операций с массивами нет (попробуй хотя-бы мой пример с походом в магазин).
++ На первый взгляд конвертеры сделаны достаточно удобно, но копни чуть в глубь и ты увидишь, что коверсии времени не выдерживают никакой критики: вопрос "какой день недели был 5 апреля 1242 года (Ледовое Побоище)" вычислить в этом кулькуляторе черезчур геморно. Для контраста:
dayofweek =: monad define
    'y m d' =. y
    dii =. (<. @ %)~   NB. inverse integer division (10 dii 33 => 3)
    y =. y - a [ a =. 12 dii 14 - m
    w1 =. 7 | 12 dii 31 * m + 2 -~ 12 * a
    w2 =. d + y + 400 dii 97 * y
    7 | <: w1 + w2
)
   dayofweek"1 (2007 4 27 ,: 1242 4 5)
4 5    NB. 27 апреля 2007 - пятница, 5 апреля 1242 - суббота

Потом сохраняем эту функцию куда-нибудь в файлик и юзаем когда захочется.
++ REPL никакой.
++ Под покет отсутствует.

Короче, нерасширяемый монолит с довольно-таки средними возможностями.

ps0: Моя критика касается исключительно этого "повер тоя", ничего личного
ps1: использован алгоритм
def dayofweek(year, month, day):
    """Calculate the day of the week (Monday is 0)."""
    a = (14 - month) // 12
    y = year - a
    weekday = (day + y + ((97 * y) // 400)
        + ((31 * (month + (12 * a) -2 )) // 12)) % 7
    if weekday == 0:
        return 6
    else:
        return weekday-1
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.