Они обе (а также Maxima) - потомки одной и той же системы MACSYMA, и начинались фактически с одного и того же кода. Maple потом действительно была переписана на C (а Mathematica, кажется, на C++, хотя и не уверен), но в обоих случаях это буквальная иллюстрация "десятого правила Гринспена" - та же Maple "написана на C" в том смысле, что в нее встроен собственный интерпретатор LISP, написанный на C, обеспечивающий выполнение основной содержательной части кода.
LISP (есть любители этого языка на форуме?)
Модератор: Модераторы разделов
-
Фантом
- Сообщения: 461
- ОС: openSUSE
Re: LISP
Они обе (а также Maxima) - потомки одной и той же системы MACSYMA, и начинались фактически с одного и того же кода. Maple потом действительно была переписана на C (а Mathematica, кажется, на C++, хотя и не уверен), но в обоих случаях это буквальная иллюстрация "десятого правила Гринспена" - та же Maple "написана на C" в том смысле, что в нее встроен собственный интерпретатор LISP, написанный на C, обеспечивающий выполнение основной содержательной части кода.
-
antares0
- Сообщения: 92
Re: LISP
Ссылками не поделитесь?
Maple вобще на B изначально была.
Maple вобще на B изначально была.
-
Фантом
- Сообщения: 461
- ОС: openSUSE
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: LISP
wikipedia://Maple (software)#cite_note-6 →
Interview with Gaston Gonnet, co-creator of Maple, SIAM History of Numerical Analysis and Computing, March 16, 2005 →
http://history.siam.org/pdfs2/Gonnet_final.pdf
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
Stauffenberg
- Сообщения: 2041
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
Re: LISP
А кто может написать программу/скрипт на Common Lisp, которая просто открывает файл, считывает оттуда строки и складывает их (одна строка - любое число). Как вы понимаете, использование функционального подхода программирования, а так же других вкусных особенностей Lisp приветствуется 
Свой скрипт я переписывал уже раз пять и продолжаю над ним работать.
Свой скрипт я переписывал уже раз пять и продолжаю над ним работать.
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
-
antares0
- Сообщения: 92
Re: LISP
Код: Выделить всё
;Пишем файл
(with-open-file (file "number-file" :direction :output)
(loop repeat 10
do (format file "~S~%" (random 100))))Код: Выделить всё
;считаем с помощью стандартного LOOP
(with-open-file (file "number-file" :direction :input)
(loop :for n = (with-standard-io-syntax
(let ((*read-eval* nil))
(read-preserving-whitespace file nil nil)
:while n :sum n))))Код: Выделить всё
;C помощью православно-скобочного, продвинутого и модного:) но не "встандартного" ITERATE
(defpackage :sum-number-files
(:use :cl :iterate))
(in-package :sum-number-files)
(flet
((safe-read (&rest rest)
(with-standard-io-syntax
(let ((*read-eval* nil))
(apply #'read-preserving-whitespace rest)))))
(iter
(for n in-file "number-file" using #'safe-read)
(sum n)))-
Stauffenberg
- Сообщения: 2041
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
Re: LISP
Интересный код. Есть о чем задуматься.
Вот мой, не содержащий ничего интересного:
И вот несколько другая идея:
Второй скрипт работает быстрее за счет компиляции, но все равно, мне не нравится
Кстати, они оба падают (переполнение) если им скормить большие файлы, и я понятия не имею как увеличить размер буфера (типов данных-то тут нет).
Вот мой, не содержащий ничего интересного:
Код: Выделить всё
(defvar i 0)
(defvar d (elt (ext:argv) 8))
(let ((in (open d :if-does-not-exist nil)))
(when in
(loop for line = (read-line in nil)
while line do (setf i (+ i (parse-integer line))))
(close in)))
(print i)И вот несколько другая идея:
Код: Выделить всё
(defparameter *filename* "numbers2.txt")
(defun f (strm i) (
let ((line (read-line strm nil)))
(if (null line) i
(f strm (+ i (parse-integer line))))))
(compile 'f)
(with-open-file (strm *filename*)
(print (f strm 0)))Второй скрипт работает быстрее за счет компиляции, но все равно, мне не нравится
Кстати, они оба падают (переполнение) если им скормить большие файлы, и я понятия не имею как увеличить размер буфера (типов данных-то тут нет).
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
-
Stauffenberg
- Сообщения: 2041
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
Re: LISP
antares0
Может Вы сможете подсказать как в clisp включить функцию указания номера строки, при выводе ошибки? Очень не удобно отлавливать ошибку, когда не знаешь где именно она произошла.
Может Вы сможете подсказать как в clisp включить функцию указания номера строки, при выводе ошибки? Очень не удобно отлавливать ошибку, когда не знаешь где именно она произошла.
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
-
antares0
- Сообщения: 92
Re: LISP
Я практически не пользуюсь clisp-ом, поэтому каких-то деталей могу и не знать. Но насколько я понимаю общую картину, поскольку CLISP входит в подмножество реализаций без source-location то никак, исключая самостоятельное дополнение его в этом плане.
С другой стороны давая непрошеные советы, отмечу если это так сильно понадобилось для отладки собственого кода, вы делаете что-то сильно не так.
С другой стороны давая непрошеные советы, отмечу если это так сильно понадобилось для отладки собственого кода, вы делаете что-то сильно не так.
-
antares0
- Сообщения: 92
Re: LISP
Stauffenberg писал(а): ↑16.01.2012 18:50Кстати, они оба падают (переполнение) если им скормить большие файлы,
Большой это какой? SBCL пережевывает по нескольку гб. на 128 мб. ОЗУ правда не очень быстро.
и я понятия не имею как увеличить размер буфера (типов данных-то тут нет).
Каких буферов?
Типы есть, но как их использовать на совести компилятора.
-
minoru-kun
- Сообщения: 621
- ОС: Debian GNU/Linux