Электропрохладительный Кислотный Тест [entries|archive|friends|userinfo]
Семён Борода

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

(no subject) [Nov. 26th, 2009|07:01 am]
[Tags|]

http://steve.yegge.googlepages.com/when-polymorphism-fails

Одна из причин почему статический полиморфизм, а также одиночный диспатч и "методы внутри классов", соответственно, сосут, а CLOS рулит и педалит.
LinkОтписаться

(no subject) [Nov. 26th, 2009|12:00 am]
[Tags|, ]

Написал TODO для своей библиотеки.
Пока что небольшое, но вообще там должно быть больше пунктов, конечно.
* Fix d3d10effect.lisp - effect matrix variables
  should be of arbitrary size, not just 4x4.
* Make more use of %get-value-into and %read-value-into.
* Rewrite memory accessor code generators. At the time they look crappy.
* Compile and load speed is VERY SLOW at the moment, especially on clisp.
  Fix it, if possible.
LinkОтписаться

(no subject) [Nov. 24th, 2009|12:01 pm]
У меня складывается впечатление, что хаскелистов совершенно не волнует практическая пригодность чего-либо, не волнует сложность, или наоборот, легкость реализации чего-либо на каком-то языке, не волнует удобство использования чего-либо, их волнует только что "хаскель лучше всех".
Link7 отписалось|Отписаться

гы [Nov. 18th, 2009|02:41 pm]
Хокку от Live1000
LinkОтписаться

(no subject) [Nov. 17th, 2009|04:46 pm]
[Tags|]

людей, которые на c++(именно c++, не си) пишут "системный" код, в детстве много били по голове, помоему
Link13 отписалось|Отписаться

(no subject) [Nov. 15th, 2009|01:15 pm]
[Tags|]

Все, кто предлагает что-либо, особенно какие-либо психоактивные вещества, запретить, и, тем более, запрещает - гнойные пидарасы, лицемеры, ханжи, и, в случае с веществами, пособники наркомафии.
А все, кто их поддерживает - необразованные селюки и/или моральные бляди.
Link4 отписалось|Отписаться

(no subject) [Nov. 13th, 2009|10:46 am]
[Tags|]

Много раз слышал что современные статические системы типов при всей крутости не могут поймать, например, ошибку-деление-на-ноль во время компиляции.

Это довольно прикольно, потому что типизация CL, которая динамическая, отловить ее при компиляции в теории может.

(declaim (inline %ratio))
(defstruct (%ratio (:constructor %ratio (x y)))
  (x 1 :type integer)
  (y 2 :type (and integer (not (eql 0)))))

(defun test (x)
  (%ratio x 0))


; compiling (DECLAIM (INLINE %RATIO))
; compiling (DEFSTRUCT (%RATIO #) ...)
; compiling (DEFUN TEST ...)

; file: D:\SBCL\test.lisp
; in: DEFUN TEST
;     (%RATIO X 0)
; 
; note: deleting unreachable code

; --> BLOCK SB-KERNEL::%MAKE-STRUCTURE-INSTANCE-MACRO TRULY-THE 
; --> SB-KERNEL:%MAKE-STRUCTURE-INSTANCE 
; ==>
;   X
; 
; note: deleting unreachable code
; 
; note: deleting unreachable code
; 
; caught WARNING:
;   Asserted type (OR (INTEGER * -1) (INTEGER 1)) conflicts with derived type
;   (VALUES (INTEGER 0 0) &OPTIONAL).
;   See also:
;     The SBCL Manual, Node "Handling of Types"
; 
; compilation unit finished
;   caught 1 WARNING condition
;   printed 3 notes
Link7 отписалось|Отписаться

(no subject) [Nov. 12th, 2009|08:50 pm]
[Tags|]

Все-таки, Clozure CL далеко не такой крутой компилятор, как SBCL.
Разница, наглядно:

(defun test (v out n)
  (declare (type fixnum n)
           (type vector3 v out)
           (optimize (speed 3) (space 0) (safety 0) (debug 0)))
  (dotimes (i n) (vec3-add v out out)))


CCL:
;;; (defun test (v out n) (declare (type fixnum n) (type vector3 v out) (optimize (speed 3) (space 0) (s
  [0]     (recover-fn)
  [5]     (movl (% ebp) (@ 8 (% esp)))
  [9]     (leal (@ 8 (% esp)) (% ebp))
  [13]    (popl (@ 4 (% ebp)))
  [16]    (pushl (% arg_y))
  [17]    (pushl (% arg_z))

;;; (dotimes (i n) (vec3-add v out out))
  [18]    (pushl ($ 0))
  [20]    (jmpl L728)

;;; (vec3-add v out out)
L25
~160 строчек )
;;; (dotimes (i n) (vec3-add v out out))
  [719]   (movl (@ -16 (% ebp)) (% arg_z))
  [722]   (addl ($ 4) (% arg_z))
  [725]   (movl (% arg_z) (@ -16 (% ebp)))
L728
  [728]   (movl (@ -16 (% ebp)) (% arg_y))
  [731]   (movl (@ -12 (% ebp)) (% arg_z))
  [734]   (cmpl (% arg_z) (% arg_y))
  [736]   (jl L25)
  [742]   (movl ($ 77825) (% arg_z))
  [747]   (leavel)
  [748]   (retl)


В SBCL, тот же код:
; disassembly for TEST
; 24C56BBA:       31C0             XOR EAX, EAX               ; no-arg-parsing entry point
;      BBC:       EB39             JMP L1
;      BBE: L0:   DDD8             FSTPD FR0
;      BC0:       D94201           FLD [EDX+1]
;      BC3:       DDD9             FSTPD FR1
;      BC5:       D94701           FLD [EDI+1]
;      BC8:       D9C9             FXCH FR1
;      BCA:       D8C1             FADDD FR1
;      BCC:       9B               WAIT
;      BCD:       D95701           FST [EDI+1]
;      BD0:       DDD8             FSTPD FR0
;      BD2:       D94205           FLD [EDX+5]
;      BD5:       DDD9             FSTPD FR1
;      BD7:       D94705           FLD [EDI+5]
;      BDA:       D9C9             FXCH FR1
;      BDC:       D8C1             FADDD FR1
;      BDE:       9B               WAIT
;      BDF:       D95705           FST [EDI+5]
;      BE2:       DDD8             FSTPD FR0
;      BE4:       D94209           FLD [EDX+9]
;      BE7:       DDD9             FSTPD FR1
;      BE9:       D94709           FLD [EDI+9]
;      BEC:       D9C9             FXCH FR1
;      BEE:       D8C1             FADDD FR1
;      BF0:       9B               WAIT
;      BF1:       D95709           FST [EDI+9]
;      BF4:       83C004           ADD EAX, 4
;      BF7: L1:   39F0             CMP EAX, ESI
;      BF9:       7CC3             JL L0
;      BFB:       BA0B001022       MOV EDX, 571473931
;      C00:       8BE5             MOV ESP, EBP
;      C02:       F8               CLC
;      C03:       5D               POP EBP
;      C04:       C3               RET


Разница в скорости выполнения понятна, соответственно, какая.
Когда же последний, наконец, под винду допилят?
Link5 отписалось|Отписаться

(no subject) [Nov. 8th, 2009|07:43 am]
[Tags|]

Прув ов концепт
http://paste.lisp.org/display/89970
(defcurried add-three (x y z) (+ x y z))
(def add-two (add-three 0))
(def inc (add-two 1))
 
(inc 9)
;; => 10

(add-three 1 2 3)
;; => 6
Link6 отписалось|Отписаться

(no subject) [Nov. 7th, 2009|08:40 pm]
Бляя, ето дичь, дикая дичь!
http://www.russiancomics.narod.ru/Comics/BD/001/page/001.html
Link2 отписалось|Отписаться

(no subject) [Nov. 7th, 2009|06:55 pm]
[Tags|, , ]

А никто случайно не знает как обойти вот это вот ограничение в MSVC++ (9.0) ?

А то из-за него ECL собранный из под оного не хочет компилировать мою библиотеку, например. И не только мою - например еще cl-unicode.
Link2 отписалось|Отписаться

(no subject) [Oct. 30th, 2009|07:51 pm]
Не курю уже больше двух недель.
Это заебись.

Говорят, за 3 недели выходят все метаболиты никотина. А через 2-12 недель полностью восстанавливается обмен нейромедиаторов.
Link1 отписался|Отписаться

(no subject) [Oct. 28th, 2009|09:04 pm]
Линукс это тоже ведь Worse Is Better
Винда гораздо меньше оно самое
LinkОтписаться

(no subject) [Oct. 28th, 2009|08:53 pm]
[Tags|]

Я понял таки наконец, чем мне не нравится Python, Ruby и разная "скриптота". А также, многие наследники сишки.

Потому что это классический Worse Is Better, прямо по Гэбриелу
http://dreamsongs.com/WIB.html
LinkОтписаться

(no subject) [Oct. 27th, 2009|07:45 pm]
[Tags|, , ]

Результаты 1 - 10 из примерно 41 400 для "syntactic abstraction". (0,27 секунд)
Результаты 1 - 10 из примерно 42 для "синтаксическая абстракция". (0,22 секунд)
LinkОтписаться

(no subject) [Oct. 27th, 2009|12:34 pm]
Си, и, тем более, C++ - все-таки невероятно уебищные языки.
Сет примитивных операторов - убог(я не говорю, чтобы там что-то вроде handler-bind или unwind-protect было, но хотя бы break с меткой блока)
Синтаксис - дерьмовый, порождающий кучу неоднозначностей(хотя, конечно, лучше, чем в хаскеле).
Массивы заранее неопределенного размера на стеке в сях ввели только в последнем стандарте, и только в сях и то, в плюсах многомерных даже массивов нет, по факту.
Ну и вот например:
http://www.linux.org.ru/view-message.jsp?msgid=4174311&lastmod=1256632564069
т.е. даже такого примитивнейшего вывода типов нет, максимум можно только type a[] = {...};
Link2 отписалось|Отписаться

(no subject) [Oct. 27th, 2009|12:13 pm]
/c/ захватили дебилы
LinkОтписаться

(no subject) [Oct. 25th, 2009|10:58 am]
только что узнал про
http://www.lisp.org/mop/dictionary.html#standard-instance-access
LinkОтписаться

(no subject) [Oct. 24th, 2009|10:14 am]
но не про че особо писать больше, на самом деле
LinkОтписаться

(no subject) [Oct. 24th, 2009|08:06 am]
[Tags|]

Я вот, наверное, никогда не пойму, почему хаскелисты и прочие "функциональщики" в упор не понимают, что лисп, особенно CL, это дичайше декларативный язык, потому как метаязык, что в нормальном среднестатистическом файле .lisp 90% форм - либо макросы, либо какие-нибудь навороты с clos, что выглядит это куда более декларативно, чем хаскель помноженный на все остальные ml'и, называют его очень императивным и сравнивают с алголом(!!), а у самих код из одних do.
Link11 отписалось|Отписаться

navigation
[ viewing | most recent entries ]
[ go | earlier ]

Advertisement