Немного о J
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 08.05.06 10:44
Оценка: 9 (1)
Привет всем.

На данный момент с сайта www.jsoftware.com нет возможности скачать исходники, только путём предварительной договорённости и за немалые деньги. И даже бинарники можно взять бесплатно лишь для персонального использования.

Но! На одной страничке обнаружились исходники языка j некой версии 7. Датированы 94-м годом, со свободной лицензией и т.д. Естественно, что этот "open source j" отличается от "jsoftware j", но думаю что второй является развитием первого.

Что любопытно? Наименование файлов в проекте:
makefile a.c ai.c ap.c au.c c.c cc.c cd.c cf.c cg.c cp.c cr.c ct.c cx.c d.c f.c i.c io.c
j.c k.c lj.c m.c main.c p.c pc.c pv.c r.c rl.c rt.c s.c t.c ta.c u.c ut.c v.c vb.c ve.c 
vg.c vh.c vi.c vm.c vp.c vs.c vx.c vz.c w.c wn.c x.c xa.c xf.c xl.c xs.c d.c- a.h d.h io.h
j.h jc.h je.h js.h jt.h lj.h p.h v.h x.h je.h- status.txt

И код, который больше походит на соревнование в Obfuscated C, например:
/* Parsing: Tacit Adverb/Conjunction Translator (s :21 and s :22)          */
#include "j.h"
#include "p.h"
...
static F2(thook){A af,ag,ah,wf,wg;B b,p,q;C c,d;V*u,*v;
 RZ(a&&w);
 u=VAV(a); c=u->id; p=c==CHOOKO; af=u->f; ag=u->g; ah=u->h;
 v=VAV(w); d=v->id; q=d==CHOOKO; wf=v->f; wg=v->g;
 if(p&&(veq(af,tlev)||veq(af,tdex)))R hooko(af,thook(ag,w));
 if(veq(a,tia)&&ADV&AT(w))R w;
 if(veq(w,tia))R a;
 if((p||c==CFORKO)&&veq(tbs,p?ag:ah)&&q&&veq(tbs,wg)){
  u=VAV(p?af:ag); b=veq(ttie,u->f); v=VAV(wf);
  if(CADVF==u->id&&(b||veq(ttie,u->g))&&CADVF==v->id&&veq(ttie,v->g))
   if(b)R p?forko(af,wf,tbs):forko(hooko(af,ag),wf,tbs);
   else R p?hooko(rtie(tie(v->f,u->f)),tbs):forko(af,rtie(tie(v->f,u->f)),tbs);
 }
 if(q&&ADV&AT(wf)&AT(wg))R forko(a,wf,wg);
 R hooko(a,w);
}

Конечно по современным стандартам это маньячество, но я нисколько не удивился увидев это .

Кроме того на этой же страничке представлены мануалы для APL, лекции по J, цитаты Кена Иверсона, фотографии, и прочее. Особого внимания, на мой взгляд, заслуживает Quotations and Anecdotes, compiled and edited by Roger Hui. Например забавная цитата:

Один из Паскалевских аргументов насчёт того, почему человек должен верить в Бога: Если Бог есть, то человеку лучше поверить в него чтобы попасть на небеса, если Бога нет, то вера в Него не причиняет никакого вреда.
Кен возразил, что в аду должно быть специальное место для людей, которые будут верить в Бога по этой причине.


Также там есть ссылка на видео, "A Celebration of Kenneth Iverson at the Computer History Museum". Эта видеозапись содержит лекции нескольких известных в CS ученых, лекции конечно посвящены памяти Кена Иверсона, воспоминаниям о его жизни, но время от времени лекторы спускаются в технические детали или поднимаются до взглядов в будущее. Мне показалось скучновато, ( хотелось больше мяса, тем более там был большой экран, по которому показывали в основном эмблему к сожалению ), 90 минут непрерывного English-speech. На любителя.

На данный момент всё.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re: Немного о J
От: Дарней Россия  
Дата: 08.05.06 12:53
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Что любопытно? Наименование файлов в проекте:

LCR>И код, который больше походит на соревнование в Obfuscated C, например:

может, на самом деле они пишут по нормальному, а потом пропускают код через специальный обфускатор?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[2]: Немного о J
От: Oyster Украина https://github.com/devoyster
Дата: 08.05.06 13:43
Оценка: :))) :))) :))
Здравствуйте, Дарней, Вы писали:

Д>может, на самом деле они пишут по нормальному, а потом пропускают код через специальный обфускатор?


У тех, кто пишет на J, обфускатор входит в стандартную поставку мозга
Re[3]: Немного о J
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 10.05.06 03:32
Оценка:
Oyster,

O>У тех, кто пишет на J, обфускатор входит в стандартную поставку мозга


А деобфускатора увы нет, и его приходится строить самому (в течение долгого времени по маленькому кирпичику) и в течение этого процесса программист вырастает на 1.5 — 2 головы
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[4]: Немного о J
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.05.06 06:03
Оценка: :))) :))) :)))
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>А деобфускатора увы нет, и его приходится строить самому (в течение долгого времени по маленькому кирпичику) и в течение этого процесса программист вырастает на 1.5 — 2 головы


... в бок.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Немного о J
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 10.05.06 06:50
Оценка:
VladD2,

LCR>>А деобфускатора увы нет, и его приходится строить самому (в течение долгого времени по маленькому кирпичику) и в течение этого процесса программист вырастает на 1.5 — 2 головы


VD>... в бок.


Бок боку рознь!

Да ладно мужики, у вас всё равно шансов нет...

(с) анектод
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re: Немного о J
От: Yuri Burger  
Дата: 11.05.06 06:02
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Но! На одной страничке обнаружились исходники языка j некой версии 7.

LCR> Датированы 94-м годом, со свободной лицензией и т.д. Естественно, что этот "open source j"
LCR> отличается от "jsoftware j", но думаю что второй является развитием первого.
LCR>Что любопытно? Наименование файлов в проекте:
LCR>
LCR>makefile a.c ai.c ap.c au.c c.c cc.c cd.c cf.c cg.c cp.c cr.c ct.c cx.c d.c f.c i.c io.c
LCR>j.c k.c lj.c m.c main.c p.c pc.c pv.c r.c rl.c rt.c s.c t.c ta.c u.c ut.c v.c vb.c ve.c 
LCR>vg.c vh.c vi.c vm.c vp.c vs.c vx.c vz.c w.c wn.c x.c xa.c xf.c xl.c xs.c d.c- a.h d.h io.h
LCR>j.h jc.h je.h js.h jt.h lj.h p.h v.h x.h je.h- status.txt
LCR>

LCR>И код, который больше походит на соревнование в Obfuscated C, например:

У меня есть их сорци за 2001 год. Там тож самое. Это у них стиль такой

Но своя логика там есть. Имена файлов в основном ориентированы на имена вербов языка. Имена функций аналогично.

Вообще заметил, что представители академической среды страдают извращенным кодированием. Смотрел сорци CProgol (тож доктор неких наук писал), тоже самое — дефайнами перебито все что только можно, после чего в сорцах вообще с трудом узнается C
Re[3]: Немного о J
От: Yuri Burger  
Дата: 11.05.06 06:06
Оценка:
Здравствуйте, Oyster, Вы писали:

O>У тех, кто пишет на J, обфускатор входит в стандартную поставку мозга


Ну, тоже самое можно сказать о тех кто пишет, скажем, на C. Ведь никто не перебивает '+' на 'plus'. А в J просто гораздо больше операторов в терминах C.
Re[4]: Немного о J
От: Oyster Украина https://github.com/devoyster
Дата: 11.05.06 06:20
Оценка: 1 (1)
Здравствуйте, Yuri Burger, Вы писали:

YB>Ну, тоже самое можно сказать о тех кто пишет, скажем, на C. Ведь никто не перебивает '+' на 'plus'. А в J просто гораздо больше операторов в терминах C.


Это шютка юмора Вообще я программистов на J уважаю, серьёзно — в лаконичности есть свои плюсы. Особенно если они умеют читать такой код
Re[2]: Немного о J
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 11.05.06 06:40
Оценка: :)
Yuri Burger,

YB>У меня есть их сорци за 2001 год. Там тож самое. Это у них стиль такой


YB>Но своя логика там есть. Имена файлов в основном ориентированы на имена вербов языка. Имена функций аналогично.


YB>Вообще заметил, что представители академической среды страдают извращенным кодированием. Смотрел сорци CProgol (тож доктор неких наук писал), тоже самое — дефайнами перебито все что только можно, после чего в сорцах вообще с трудом узнается C


Да, точно. Вот слова самого Кена:

I showed this fragment to others in the hope of interesting someone competent in both C and APL to take up the work, and soon recruited Roger Hui, who was attracted in part by the unusual style of C programming used by Arthur, a style that made heavy use of preprocessing facilities to permit writing further C in a distinctly APL style.

Я показал этот фрагмент другим с надеждой заинтересовать кого-нибдудь компетентного и в С и в АПЛ чтобы подхватить эту работу, и вскоре нашёл Роджера Хуи(-я? //простите я больше не буду — прим. перев.), который был очарован таким необычным (Артуровским) стилем программирования на С, стилем с интенсивным использованием средств препроцессора настолько, что это позволяло дальше работать в ярко-выраженном АПЛ-стиле по-прежнему используя С код.


И ещё, Юра, поделись пожалуйста (если можешь конечно) этими исходниками. В тех, о которых я писал выше, не всё реализовано.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[5]: Немного о J
От: Аноним  
Дата: 11.05.06 10:01
Оценка:
Здравствуйте, Oyster, Вы писали:

YB>>Ну, тоже самое можно сказать о тех кто пишет, скажем, на C.

YB>>Ведь никто не перебивает '+' на 'plus'. А в J просто гораздо больше операторов в терминах C.
O>Это шютка юмора

Дык яж не против Просто поясняю, что если копнуть глубже, то в J нет ничего "мозгодробительного" — всё тож самое...

O> Особенно если они умеют читать такой код


сомниваюсь что они его читают по своему опыту — легче написать новое, чем читать чужое... сочинять очередное "заклинание" можно давольно быстро.. но вот разобраться в чужом )
Re[3]: Немного о J
От: Аноним  
Дата: 11.05.06 10:14
Оценка:
LCR>И ещё, Юра, поделись пожалуйста (если можешь конечно) этими исходниками.

Не могу. Они компании принадлежат.

LCR>В тех, о которых я писал выше, не всё реализовано.


хех, в этих уже давно тоже не всё. официальный J щас 504, в бете 601. К 504 много добавили/исправили. В 601 еще больше добавили/исправили.

кста, я так понял 504 щас опсолютно бесплатно идет. раньше ыла оговорка о "academic use only", а щас вроде савсем бесплатно. 601 конечно только для тестов.
Re[4]: Немного о J
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 11.05.06 10:35
Оценка:
Yuri?

LCR>>И ещё, Юра, поделись пожалуйста (если можешь конечно) этими исходниками.

А>Не могу. Они компании принадлежат.
NP, тогда вопрос снят.

LCR>>В тех, о которых я писал выше, не всё реализовано.

А>хех, в этих уже давно тоже не всё. официальный J щас 504, в бете 601. К 504 много добавили/исправили. В 601 еще больше добавили/исправили.
А>кста, я так понял 504 щас опсолютно бесплатно идет. раньше ыла оговорка о "academic use only", а щас вроде савсем бесплатно. 601 конечно только для тестов.

Да, это понятно,
   Name: Jay Soft
   JUL: 7888-027-4275

только вот даже такие сорцы дают гораздо большую свободу интеграции, чем бинарники.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[6]: Немного о J
От: Oyster Украина https://github.com/devoyster
Дата: 11.05.06 10:54
Оценка: :)
Здравствуйте, <Аноним>, Вы писали:

O>> Особенно если они умеют читать такой код


А>сомниваюсь что они его читают по своему опыту — легче написать новое, чем читать чужое... сочинять очередное "заклинание" можно давольно быстро.. но вот разобраться в чужом )


На форуме кто-то из апологетов, что уметь читать код на J или K — это уже следующая ступень мастерства. Я уверен, что кто-то его читать умеет...
Re[7]: Немного о J
От: Дарней Россия  
Дата: 11.05.06 11:08
Оценка: :)
Здравствуйте, Oyster, Вы писали:

O>На форуме кто-то из апологетов, что уметь читать код на J или K — это уже следующая ступень мастерства. Я уверен, что кто-то его читать умеет...


Такие люди не бывают на форумах... потому что они уже достигли полного просветления и им это не нужно
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[5]: Немного о J
От: Yuri Burger  
Дата: 11.05.06 11:10
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Да, это понятно,

LCR>
LCR>   Name: Jay Soft
LCR>   JUL: 7888-027-4275
LCR>

LCR>только вот даже такие сорцы дают гораздо большую свободу интеграции, чем бинарники.

Ы? Мне до сих пор хватало следующих вариантов:

1) J в роли ведущего. Основная логика писана в J, узкие места в C/C++ динамических библиотеках — благо в J есть биндинг. Это лучший вариант.

2) J в роли ведомого. На J пишется простенький сервер, взаимодействие по сокетам.

3) Тулза на J. Удобно когда есть некая тяжелая (по ресурсам и времени) логика. Её делаем на J. Апликуха со всякими трещалками и пыхтелками, скажем, на яве или дотнете общается с юзером, а эту тяжолую логику просто запускает через шелл-экзекьют. Данные гоняем через файлы. Если же обоим частям нужно общаться чаще, тогда вариант 1).

А в 601 наконецто появилась реализация интерпретатора в виде динамической библиотеки (для юниха, для виндов она и раньше была).
Re[3]: Немного о J
От: Mikl Kurkov Россия  
Дата: 11.05.06 12:13
Оценка: 18 (1)
Здравствуйте, Oyster, Вы писали:

O>У тех, кто пишет на J, обфускатор входит в стандартную поставку мозга


Ну почему никто не удивляется что на китайском языке люди стихи пишут и в любви признаются. Тут тоже самое. Страшен он на первый взгляд. А изучение его ничуть не сложнее любого иностранного языка и уж точно легче изучения китайского. А ведь говорят что и китайский некоторые люди выучивают .

Да кривая обучения более крутая чем у других языков. Я и сам с нее сорвался однажды, дочитав до середины J For C Programmer и бросив, так как понял что только больше запутываюсь. Но потом я взял vocabulary и просто выучил смысл всех операторов. А что вы делаете когда изучаете новый иностранный язык? Далее взял прекрасную книгу Learning J и все встало на свои места. Кроме того очень помогает общение с носителями языка. На jsoftware.com очень интересный форум. Причем кроме решения технических вопросов тут можно получить и познавательный экскурс в историю от очевидцев, людей стоявших у истоков отрасли. Кстати большинство ответов можно найти при помощи поиска. Хотя наверное это свойственно любому форуму с историей.

Еще одна ошибка которую часто допускают новички — это попытка перенести приемы из других языков в J. Тут опять же хорошо работает сравнение с изучением иностранного языка. Язык это не только грамматика, орфография но и идиомы, обороты речи, сленг наконец. И без знания всего этого нельзя полноценно язык использовать. И перенос идиом и выражений из одного языка в другой часто полностью меняет их смысл. Так что нужно почаще обращаться к Dictionary и Phrases, а не сетовать что тут не так как в языке XXX.

Последняя бета версии 601 очень хороша. Эта версия не вполне совместима с предыдыдущей так что если хотите начать то начинайте сразу с нее. Одно из основных изменений — полная поддержка юникода. Как на уровне исходных текстов (теперь это utf-8) так и внутри среды. Чтобы получить представление о дополнительных возможностях предоставляемых системой можно запустить несколько демо-приложений идущих в комплекте (меню Studio\Demos). Наиболее интересные это:
grid — показаны возможности нового контрола grid, полностью переписанного на J в этой версии.
plot — шикарный построитель графиков с богатыми возможностями настройки отображения.
opengl — 3D графика с использованием OpenGL из J
life — игра жизнь

--
Mikl
Re: Немного о J
От: mishaa Россия http://kmmbvnr.livejournal.com
Дата: 23.05.06 11:42
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Привет всем.


LCR>Но! На одной страничке обнаружились исходники языка j некой версии 7. Датированы 94-м годом, со свободной лицензией и т.д. Естественно, что этот "open source j" отличается от "jsoftware j", но думаю что второй является развитием первого.


LCR>Что любопытно? Наименование файлов в проекте:

LCR>Конечно по современным стандартам это маньячество, но я нисколько не удивился увидев это .

Ха! Исходники OpenSource'ного A+ выглядят примерно также. Меня там особо впечатлили хитрые макросы генерирующие функции.
-- Главное про деструктор копирования не забыть --
Re[2]: Немного о J
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 23.05.06 11:47
Оценка:
mishaa,

LCR>>Конечно по современным стандартам это маньячество, но я нисколько не удивился увидев это .


M>Ха! Исходники OpenSource'ного A+ выглядят примерно также. Меня там особо впечатлили хитрые макросы генерирующие функции.


Ну макросами генерирующими функции, классы и прочие штуки сейчас вряд ли кого удивишь. Наверное весь кайф в том, что они хитрые, а?
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re: Немного о J
От: FR  
Дата: 23.06.06 08:06
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Привет всем.


LCR>На данный момент с сайта www.jsoftware.com нет возможности скачать исходники, только путём предварительной договорённости и за немалые деньги. И даже бинарники можно взять бесплатно лишь для персонального использования.


Не знаешь как получить эту free лицензию, а то наг скрин уже достает
На сайте ничего ни нашел.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.