LINUX.ORG.RU

SP-Forth/4 для Linux


0

0

Михаил Максимов выпустил первую версию SP-Forth/4 для Linux. В комментариях к анонсу обсуждаются планы по развитию проекта с конечной целью написать самостоятельную операционную систему на Forth.

>>> Подробности

★★★

Проверено: Demetrio ()

Ответ на: комментарий от anonymous

А не могли бы вы сказать за какое время на вашей машине посчитает 
F(10000) следующая простейшая функция

def fib(n):
    a,b = 1,1
    while n>1:
        a,b,n = a+b,a,n-1
    return a

?

anonymous
()
Ответ на: комментарий от anonymous

2anonymous (*) (19.01.2005 19:44:09)

> А не могли бы вы сказать за какое время на вашей машине посчитает 
> F(10000) следующая простейшая функция
Примерно столько же, полсекунды или меньше.
А вот F(100000) че-то я не дождался от нее и за 30 сек - срубил.
Ясен пень, другая асимптотика.
Видимо, он еще прилично тратит чтобы большое число в десятичный
вид перевести для печати.


anonymous
()
Ответ на: комментарий от Sun-ch

облом, по стандарту С++ не более 40 (кажется) вложенных шаблонов, gcc тянет больше, но 

g++ -v
Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/specs
Configured with: ./configure
Thread model: posix
gcc version 3.2.3


#include <iostream>

using namespace std;

template<int n> struct F{enum {v = F<n-1>::v + F<n-2>::v};};

template<> struct F<0>{enum {v = 0};};

template<> struct F<1>{enum {v = 1};};

main(){ cout << F<1024>::v << endl; }

g++ --static -o fib fib.cpp
fib.cpp:11: template instantiation depth exceeds maximum of 500 (use
   -ftemplate-depth-NN to increase the maximum) instantiating `struct F<24>'
fib.cpp:11:   instantiated from `F<26>'
fib.cpp:11:   instantiated from `F<28>'
fib.cpp:11:   instantiated from `F<30>'
...
fib.cpp:11:   instantiated from `F<1024>'
fib.cpp:11:   instantiated from here
fib.cpp:11: incomplete type `F<25>' does not have member `v'
fib.cpp:11: enumerator value for `v' not integer constant


anonymous
()
Ответ на: комментарий от anonymous

>Поздравляю, в Вашу замечательную программу на Хаскелле или Форте

Кхм. "На хаскелле или не форте" - это как? Или "чукча не читатель"? :)

А по сути - значит, не 10000-е, а 40000-е. У меня ghc сейчас не установлен, я запускал скомпилённый раньше, завалявшийся в каталоге с тестами exe-шник :) А тесты я гонял на 10000 и 40000. Но 40000, по памяти, считалось несколько секунд, а 10000 - мгновенно. Вот и подумал, что это оно :)

А, вообще, скорость Питона и Хаскелла должна быть сопоставима...

KRoN73 ★★★★★
()
Ответ на: комментарий от Moridin

>Годы нужны на освоение математики. После чего любая технология в совершенстве изучается за несколько дней.

Так было лет 15-20 назад. Сейчас же на изучение API той же жабы легко уйдут недели-месяцы, а на изучение Win API - месяцы-годы.

>Выберут же того, у кого могзи лучше работают, а не обезьянку-ремесленника.

Все зависит от того, зачем выбирают. Проблема найма на работу в наши дни состои в том, что по 90% нанимателей, начинают чесаться, когда им нужно чтобы проект был закончен позавчера. Правильный ремесленик сделает что от него требуется быстрее. Так что не все так очевидно, если говорить не о NASA.

alt-x ★★★★★
()
Ответ на: комментарий от Sun-ch

>Могу спорить на коньяк, что на асме, С или форте никто более быструю прогу не напишет :))

Саныч, гони коньяк!

den@localhost programming $ cat fibonacci2/main.cpp
#include <iostream>

using namespace std;

template<int n> struct F{enum {v = F<n-1>::v + F<n-2>::v};};

template<> struct F<0>{enum {v = 0};};

template<> struct F<1>{enum {v = 1};};

int main(){ cout << F<43>::v << endl; }
den@localhost programming $ g++ -o fibonacci2/f fibonacci2/main.cpp
den@localhost programming $ time fibonacci2/f
433494437

real 0m0.006s
user 0m0.000s
sys 0m0.000s

den@localhost programming $ cat fibonacci/main.c
#include <stdio.h>

int main(void)
{
int f = 43;
int n1=1;
int n2=1;
int n3;
for (;f>2;f--) {
n3=n1+n2;
n1=n2;
n2=n3;
}
printf("%d",n2);
return 0;
}
den@localhost programming $ gcc -o fibonacci/f fibonacci/main.c
den@localhost programming $ time fibonacci/f
433494437
real 0m0.004s
user 0m0.000s
sys 0m0.000s

zim
()
Ответ на: комментарий от Sun-ch

>фирменных даташитах некоторой инфы просто не было и он ее доставал с помощью осциллографа.

Не обессудь, но ты привел как раз классический пример Ремесленика-Левши. На самом деле я всегда относился с завистью-уважением к таким людям, но в то же время они обычно не успевают за прогрессом и по прошествию десятка лет остаются за бортом. Как крутые спецы по КР580ИК80, потом - Спектрумам, потом - крутые спецы по Ямахам, а потом - по самопальным писюкам на 8086.

По этой причине, когда студенты меня спрашивали, что им учить в первую очередь, я всегда отвечал: "математику".

К сожалению, привязанность к новой технологии - неотъемлимая черта любого поколения молодежи. Связано это с тем, что любой закончивший школу/институт, понимает, что с "зубрами", которые на устоявшейся технологии сидят уже с 10 лет, ему не сравниться и начинает сразу учить новейшую технологию, которая "зубрам" не интересна - все и так работает. Когда немного подрастут - они занимают положение зубров, а новое поколение молодежи кладет с прибором уже на технологию этой подросшей молодежи, и начинает учить еще более новую.

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

Так или иначе, быстрая смена технологий, о которой я тут упомянул, создает соответстующий рынок. Поэтому теперь уже непонятно, что более полезно - математика или ремесло.

alt-x ★★★★★
()
Ответ на: комментарий от alt-x

>Так или иначе, быстрая смена технологий, о которой я тут упомянул, создает соответстующий рынок. Поэтому теперь уже непонятно, что более полезно - математика или ремесло.

Вопрос в том, для чего полезно. Для зашибания денег в краткосрочной перспективе - ремесло. Для долгосрочной перспективы это, наверное, математика.

WFrag ★★★★
()
Ответ на: комментарий от WFrag

>> Так или иначе, быстрая смена технологий, о которой я тут упомянул, создает соответстующий рынок. Поэтому теперь уже непонятно, что более полезно - математика или ремесло.

> Вопрос в том, для чего полезно. Для зашибания денег в краткосрочной перспективе - ремесло. Для долгосрочной перспективы это, наверное, математика.

Короче: "Любовь приходит и уходит, а кушать хачется всегда"...

Развиваем тему: "Чтобы заработать деньги, нужно много работать. Чтобы разбогатеть, нужно придумать что-то ещё"

Вот, где-то, где-то тут и всплывают и математика, и теоретическая физика, и исследование космоса... :)

anonymous
()
Ответ на: комментарий от alt-x

>По этой причине, когда студенты меня спрашивали

Сильно :)

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

Отнюдь, сидят сейчас в сервис-центре какого нибудь Самсунга, где в

большом авторитете.

Или специализируются по оборудованию CISCO, ну очень узкие спецы,

но в действительно нетривиальных ситуациях они решают.

Sun-ch
()
Ответ на: комментарий от KRoN73

2KRoN73:

> Кхм. "На хаскелле или не форте" - это как? Или "чукча не читатель"? :)
Если пользуетесь кавычками, сударь, не перевирайте цитаты.

fib(40000) имеет 8362 знака. С помощью первой программы на Питоне
считается меньше чем за секунду.
Значит, все-таки ошибка.

anonymous
()
Ответ на: комментарий от anonymous

>Это были терминальные станции ЕС-7970.

Точно! 7920 были тупыми. Забыл уже. :(

vada ★★★★★
()
Ответ на: комментарий от Sun-ch

>Двоечники, вас че в институте программировать не учат?
>#include <iostream>
>using namespace std;
>template<int n> struct F{enum {v = F<n-1>::v + F<n-2>::v};
>template<> struct F<0>{enum {v = 0};
>template<> struct F<1>{enum {v = 1};
>main(){ cout << F<42> << endl; }
>Могу спорить на коньяк, что на асме, С или форте никто более быструю
>прогу не напишет :))))

Гыгыгыгыгы :))))))))))))

vada ★★★★★
()
Ответ на: комментарий от Sun-ch

>Отнюдь, сидят сейчас в сервис-центре какого нибудь Самсунга, где в большом авторитете.

Вот я и говорю: сейчас работа есть, а что будет через лет 10 - непонятно. Сервис-центры в привычном смысле все менее выгодны становятся. Дешевле становится посадить десяток девочек на склад, где они будут зачитывать по телефону приятными голосами инструкции, а по пришествию товара на ремонт, выдавать новый, а старый просто выбрасывать. Утрирую, конечно, но ты понял.

alt-x ★★★★★
()
Ответ на: комментарий от Sun-ch

>Могу спорить на коньяк, что на асме, С или форте никто более быструю >прогу не напишет :))))

На FORTH-е, о-о-очень условно, последний раз на нем писал лет пять назад (а если учесть мой возраст, то тогда я вообще дите был :) ):

: MYFIB1000 LITERAL [ 1000 FIB , ] ;

MYFIB1000 .

FIB было пару постов выше :)

Можно в виде слова оформить, но боюсь моих познаний маловато. Идея такая:

: FIBEMBED [ HERE 4 - DUP @ FIB SWAP ! ] ; IMMEDIATE

Хак - подменияем последнее число на число фибоначчи с этим номером. Возможно, от HERE не нужно отнимать 4 - я не помню, куда оно указывает.

Использование:

: MYSUPERWORD 10 FIBEMBED ;

Получаем слово с вкомпилинным значением 10-ого числа Фибоначчи :)

Это слово - и есть наша программа.

P.S. Я не пью коньяк :)

WFrag ★★★★
()
Ответ на: комментарий от alt-x

А не надо API осваивать. Нормальные API достаточно хорошо структурированы, чтоб всё необходимое за секунды находилось в документации.

Moridin
()
Ответ на: комментарий от Moridin

>А не надо API осваивать. Нормальные API достаточно хорошо структурированы, чтоб всё необходимое за секунды находилось в документации.

Где они, такие API... :(

alt-x ★★★★★
()
Ответ на: комментарий от alt-x

2alt-x:

>Где они, такие API... :(

Мало таких... потому как "ремесленники" и "левши" нанимаются для их написания, а руководят процессом сами знаете кто :(

Или "Just for Fun" API пишется, а требовать в этом случае от автора Хорошей структурированной полной документации как-то нелогично...:)

Led ★★★☆☆
()
Ответ на: комментарий от Moridin

Не, не надо про .NET. Там API для имбицилов разработано, по принципу "Just click the button!".

Оно и понятно, что 80% времени требуется 20% функциональности, но там это, ИМХО, до абусрда доведено. Когда все-таки требуются эти 20% функциональности, получить их очень не просто. Сидишь как последний идиот в Reflector-е каком-нибудь и пытаешься понять, как бы приватный метод вытащить или от закрытого класса отнаследоваться.

WFrag ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.