| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Безграмотность лиспописателей

Безграмотность лиспописателей

Ответ
Поиск в этой теме
Непрочитано 24.05.2010, 11:47 #1
Безграмотность лиспописателей
gomer
 
строю, ломаю
 
Украина
Регистрация: 03.04.2008
Сообщений: 5,515

Это, конечно, личное дело каждого пишущего, но мне, если честно, уже надоело видеть в кодах названия переменных и польз. функций, написанные с ошибками
Просмотров: 14754
 
Непрочитано 24.05.2010, 11:52
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Цитата:
Это, конечно, личное дело каждого пишущего, но мне, если честно, уже надоело видеть в кодах названия переменных и польз. функций, написанные с ошибками
Нда? А пример?
Укажи, будь добёр, на ошибки:
Код:
[Выделить все]
(defun _kpblc-get-appload-list (/ reg res profile)
  (setq reg (strcat "HKEY_CURRENT_USER\\"
                    (vlax-product-key)
                    "\\Profiles\\"
                    (setq profile
                           (vla-get-activeprofile
                             (vla-get-profiles
                               (vla-get-preferences (vlax-get-acad-object))
                               ) ;_ end of vla-get-profiles
                             ) ;_ end of vla-get-activeprofile
                          ) ;_ end of setq
                    "\\Dialogs"
                    ) ;_ end of strcat
        res (vl-sort
              (vl-remove-if-not
                (function
                  (lambda (x)
                    (findfile (cdr x))
                    ) ;_ end of lambda
                  ) ;_ end of function
                (mapcar
                  (function
                    (lambda (x)
                      (cons x
                            (vl-registry-read
                              (strcat reg "\\Appload\\Startup")
                              x
                              ) ;_ end of vl-registry-read
                            ) ;_ end of cons
                      ) ;_ end of lambda
                    ) ;_ end of function
                  (vl-remove-if-not
                    (function
                      (lambda (x)
                        (wcmatch (strcase x) "[1-9]*STARTUP*")
                        ) ;_ end of lambda
                      ) ;_ end of function
                    (vl-registry-descendents
                      (strcat reg "\\Appload\\Startup")
                      ""
                      ) ;_ end of vl-registry-descendents
                    ) ;_ end of vl-remove-if-not
                  ) ;_ end of mapcar
                ) ;_ end of vl-remove-if-not
              (function
                (lambda (a b)
                  (< (atoi (car a)) (atoi (car b)))
                  ) ;_ end of lambda
                ) ;_ end of function
              ) ;_ end of vl-sort
        ) ;_ end of setq
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.05.2010, 12:17
#3
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Алексей, Вы - пример для подражания многим... И я, чесно говоря, не ожидал вас в этой теме... вот к примеру один из студенческих лиспов, не самый плохой...
Код:
[Выделить все]
;; 1. Get spisok SP_HEAD - format:
;;   ((name fild; type fild; length fild; !!REM nambe symbol on the point)...)
;; 2. Get spisok RECORD_ALL - format:
;;    ((valua fild) (valua fild) ..........)              			

;;%%%%%%%%%%%%%%%%%%%%%%%%%%%%
(defun blok (bn)     
(setq sp_record nil) (setq n_name nil) (setq chh nil) (setq shra 0)
  (repeat 10 (setq chh (nth bn all_char))                          ;; N
          (if (and (= shra 0) (/= chh 0))                          ;; !! shra
		  (setq n_name (cons (chr chh) n_name)) (setq shra 1))     ;;    L2 LS
          (setq bn (+ bn 1))                                       ;; A
  )                                                                ;;
     (setq q 1) (setq n_str (nth 0 n_name))                        ;; M
	  (while (< q (length n_name))                                 ;;
      (setq n_str (strcat (nth q n_name) n_str))                   ;; E
	  (setq q (+ q 1))                                             ;;
	  )                                                            ;; fild
	  (setq sp_record (cons n_str sp_record))                      ;; 
	  
(setq sp_record (cons (chr (nth (+ bn 1) all_char)) sp_record))  ;; N or C
	                                                             
(setq sp_record (cons (nth (+ bn 6) all_char) sp_record))  ;;length integer

;;(setq sp_record (cons (nth (+ bn 7) all_char) sp_record))  ;;length real-point

(setq sp_record (reverse sp_record))
;(print sp_record)  
;(if (= "CODE" (nth 0 sp_record)) (getstring))

)
;;DEFUN___  DEFUN___ DEFUN___ DEFUN___ DEFUN___ DEFUN___ DEFUN
(defun dbf_sp (file_n)

         (setq fnn0 file_n)
         (setq fdd0 (open fnn0 "r"))   ; ...and can read the file?
		 (setq ar 0) (setq all_char nil)    
	 (while (setq chh (read-char fdd0))                     ;; MAKE
	 (setq all_char (cons chh all_char)) (setq ar (+ ar 1)) ;; spisok
;	 (if (and (> ar 40) (< ar 50))  
;	 (progn  (prin1 "    ") (prin1  ar) (prin1 chh)  ))
	 )              (close fdd0)                            ;; all_char
	 (setq all_char (reverse all_char))                     ;;
	 (setq len_all_char (length all_char))                  

                                                 ;; n_byte - border value
		 (setq l_byte (nth 8 all_char))          ;;          record
		 (setq h_byte (nth 9 all_char))		     ;; LIMIT - name record 127!!!
		 (setq n_byte (+ (* h_byte 256) l_byte)) ;;

     (setq n 1) (setq sp_head nil)  (setq nb 32) ;;  make SPISOK
         (while (<= n (/ (- n_byte 32) 32))      ;; 
		 (blok nb)                               ;;(filds_name; type; 
		 (setq nb (+ nb 32))                     ;;  nambe symbol;
		 (setq sp_head (cons sp_record sp_head)) ;;  !REM  nambe symbol 
		 (setq n (+ n 1))                        ;;      on the point;)
		 )                                       ;; 
         (setq sp_head (reverse sp_head))		 ;;
         (setq len (length sp_head))		         ;;
		   
;;Fo All record__		  Fo All record__		 Fo All record__		 
         (setq record_all nil) (setq n_r (+ 1 n_byte))   
         (while (< n_r len_all_char)				
   
;; Fo 1 record______ Fo 1 record_____ Fo 1 record______ Fo 1 record
        (setq n 0) (setq record nil) 
    		 (while (< n len)	 
  (setq atom_st nil) (setq q 1)
  (setq len_fild (nth 2 (nth n sp_head)))  
	                             (setq a_r n_r)
                             (setq n_r (- (+ len_fild n_r) 1))
			 (setq atom_st (chr (nth n_r all_char)))
				 (setq n_r (- n_r 1))
    (repeat (- len_fild 1) (setq c_h (nth n_r all_char))        
            (setq atom_st (strcat (chr c_h) atom_st))
            (setq n_r (- n_r 1))                                          
    )                             (setq n_r (+ a_r len_fild))
	           
	           (while (= (substr atom_st 1 1) " ")   ;; Erase " " 
	   (setq atom_len (strlen atom_st))             ;; befo atom_len
		   (setq atom_st (substr atom_st 2 (- atom_len 1)))   ;;
			    )

     	     (setq record (cons atom_st record))
             (setq n (+ n 1))      
    		 )
			 (setq n_r (+ n_r 1))
;; End 1 record------ End 1 record-------- End 1 record		 
     (setq record_all (cons (reverse record) record_all)) 
    		 )                                          
;;All record__ All record__ All record__ All record
   )
С уважением
gomer вне форума  
 
Непрочитано 24.05.2010, 13:29
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Конкретно в этом лиспе я бы обращал внимание не на ошибки наименования переменных и (или) функций. Тут концептуальных ошибок хватает...
  1. Почему несколько setq не объединены в один?
  2. Почему принципиально не используются локальные переменные?
  3. Как-то странно сделана работа с файлами:
    Код:
    [Выделить все]
    (defun dbf_sp (file_n)
      (setq fnn0 file_n);<...>
    - зачем fnn0 присваивать уже переданный параметр?
  4. Почему обращение к dbf-файлу (если я верно понял код) осуществляется именно через чтение файла, а не средствами ADO, например? Конечно, головняка там больше, но и работа на порядок эффективнее.
  5. Опять же, в коде работы с файлом - существуют "лишние" переменные (ar). Хотя, если это всего лишь часть более общей системы, и код "выдран" откуда-то еще... Короче, претензия только наполовину.
Как бы я попробовал сделать код (не вникая в логику, ее понять может только автор и то только если с момента написания кода прошло не больше недели):
Код:
[Выделить все]
;; 1. Get spisok SP_HEAD - format:
;;   ((name fild; type fild; length fild; !!REM nambe symbol on the point)...)
;; 2. Get spisok RECORD_ALL - format:
;;    ((valua fild) (valua fild) ..........)              			

;;%%%%%%%%%%%%%%%%%%%%%%%%%%%%
(defun blok (bn all_char / sp_record n_name chh shra q n_str)
  (setq sp_record nil
        n_name nil
        chh nil
        shra 0
        ) ;_ end of setq
  (repeat 10
    (setq chh (nth bn all_char))
    (if (and (= shra 0) (/= chh 0))
      (setq n_name (cons (chr chh) n_name))
      (setq shra 1)
      ) ;_ end of if
    (setq bn (1+ bn))
    ) ;_ end of repeat
  (setq q     1
        n_str (nth 0 n_name)
        ) ;_ end of setq
  (while (< q (length n_name))
    (setq n_str (strcat (nth q n_name) n_str)
          q     (1+ q)
          ) ;_ end of setq
    ) ;_ end of while
  (setq sp_record (cons n_str sp_record)
        sp_record (cons (chr (nth (+ bn 1) all_char)) sp_record)
        sp_record (cons (nth (+ bn 6) all_char) sp_record)
        sp_record (reverse sp_record)
        ) ;_ end of setq
  ) ;_ end of defun

(defun dbf_sp (file_name /         fdd0      ar        all_char  chh       len_all_char        l_byte    n_byte
               n         n_r       sp_head   nb        len       record_all          record    atom_st   atom_len
               q         len_fild  a_r       fild      c_h
               )
  (setq fdd0     (open file_name "r")
        ar       0
        all_char nil
        ) ;_ end of setq
  (while (setq chh (read-char fdd0))
    (setq all_char (cons chh all_char)
          ar       (1+ ar)
          ) ;_ end of setq
    ) ;_ end of while
  (close fdd0)
  (setq all_char     (reverse all_char)
        len_all_char (length all_char)
        l_byte       (nth 8 all_char)
        h_byte       (nth 9 all_char)
        n_byte       (+ (* h_byte 256) l_byte)
        ) ;_ end of setq
  (setq n 1
        sp_head nil
        nb 32
        ) ;_ end of setq
  (while (<= n (/ (- n_byte 32) 32))
    (blok nb all_char)
    (setq nb      (+ nb 32)
          sp_head (cons sp_record sp_head)
          n       (1+ n)
          ) ;_ end of setq
    ) ;_ end of while
  (setq sp_head    (reverse sp_head)
        len        (length sp_head)
        record_all nil
        ) ;_ end of setq
  (setq n_r (+ 1 n_byte))
  (while (< n_r len_all_char)
    (setq n 0)
    (setq record nil)
    (while (< n len)
      (setq atom_st  nil
            q        1
            len_fild (nth 2 (nth n sp_head))
            a_r      n_r
            n_r      (- (+ len_fild n_r) 1)
            atom_st  (chr (nth n_r all_char))
            n_r      (- n_r 1)
            ) ;_ end of setq
      (repeat (- len_fild 1)
        (setq c_h     (nth n_r all_char)
              atom_st (strcat (chr c_h) atom_st)
              n_r     (- n_r 1)
              ) ;_ end of setq
        ) ;_ end of repeat
      (setq n_r (+ a_r len_fild))
      (while (= (substr atom_st 1 1) " ")
        (setq atom_len (strlen atom_st)
              atom_st  (substr atom_st 2 (- atom_len 1))
              ) ;_ end of setq
        ) ;_ end of while
      (setq record (cons atom_st record)
            n      (+ n 1)
            ) ;_ end of setq
      ) ;_ end of while
    (setq n_r        (+ n_r 1)
          record_all (cons (reverse record) record_all)
          ) ;_ end of setq
    ) ;_ end of while
  ) ;_ end of defun
А так, для написания нормального кода - надо знать задачу. Полностью.
---
P.S. Меня - один, ко мне - на "ты", пожалуйста. Иначе я среди себя теряться начинаю
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.05.2010, 13:57
#5
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Да, код вырван... куском... Это не принципиально... Может кто и задумается над своим творчеством...
Вопрос! Если переменная указана локально в (списке параметров) зачем ее в nil устанавливать... Еще бывает так, что это делается в начале и в конце программы, без указания на локальность... например
Код:
[Выделить все]
(defun test ()
  (setq somevar nil)
  ;; здесь код
  ;; ....................
  (setq somevar nil)
  (princ)
)

Последний раз редактировалось gomer, 24.05.2010 в 16:05.
gomer вне форума  
 
Непрочитано 24.05.2010, 14:16
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


gomer, у меня на анализ и переработку кода было примерно минут 5. "шо же вы хочете?" (с)
Если переменная в начале работы функции выставляется в nil, это не означает, что эта переменная получит nil в конце. Пример:
Код:
[Выделить все]
(defun test ()
  (setq var 10.5)
  (/ 50. 0.)
  (setq var nil)
  ) ;_ end of defun

_$ (setq var nil)
nil
_$ (test)
; error: divide by zero
_$ var
10.5
_$
В то же время:
Код:
[Выделить все]
(defun test1 (/ var)
  (setq var 10.5)
  (/ 50. 0.)
  ) ;_ end of defun

_$ (setq var nil)
nil
_$ 
; 1 form loaded from #<editor "<Untitled-0> loading...">
_$ (test1)
; error: divide by zero
_$ var
nil
_$
P.S. Кстати о птичках. То бишь об ошибках...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 24.05.2010 в 16:15.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.05.2010, 16:06
2 | 1 #7
Евгений А.

Армспорт
 
Регистрация: 18.07.2006
Ейск
Сообщений: 355


Цитата:
Сообщение от gomer Посмотреть сообщение
Это, конечно, личное дело каждого пишущего, но мне, если честно, уже надоело видеть в кодах названия переменных и польз. функций, написанные с ошибками
А что конкретно имело ввиду ваше величество?
О простите, простите. Впредь буду у вас спрашивать совета (разрешения) на имя переменной или функции...

Я улыбаюсь с такой самоуверенности в своих познаниях! Надо бы как-то скромнее быть, что ли...
Умный человек никогда не будет бегать и орать что он жутко умный, а вот дурень - запросто!
Евгений А. вне форума  
 
Автор темы   Непрочитано 24.05.2010, 16:23
#8
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Я не эстет, но давно заметил, что самые полезные программы пишутся на чудовищных диалектах
Хотя, если код не доступен пользователю, все гладко Почему-то заморские программисты не выставляют себя людьми недалекими... А пишут без Ашипок...
зы пишу все это без претензий и зла ни на кого не держу, а для таких шибко умных, как я, есть kelv.exe
gomer вне форума  
 
Непрочитано 24.05.2010, 21:00
#9
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от gomer Посмотреть сообщение
Почему-то заморские программисты не выставляют себя людьми недалекими... А пишут без Ашипок...
Если бы...
Слишком много раз, пытаясь разобраться с подробнейшими комментариями в кодах, я не мог их понять, а переводчик не мог перевести - мало того, что слова с ошибками, да еще каша из нескольких языков.
Елпанов Евгений вне форума  
 
Непрочитано 24.05.2010, 21:26
| 1 #10
357

бывший...
 
Регистрация: 13.08.2009
Краснодар
Сообщений: 1,171
<phrase 1=


Цитата:
Сообщение от gomer Посмотреть сообщение
Это, конечно, личное дело каждого пишущего, но мне, если честно, уже надоело видеть в кодах названия переменных и польз. функций, написанные с ошибками
А это к чему вообще-то? Надоело - не читай, никто ведь не заставляет, верно? А читаешь и находишь ошибки - помоги человеку их исправить. Люди вон с инженерным образованием по-русски пишут с ошибками (не путать с опечатками), а ты в лиспе грамотности и изящества хочешь.
357 вне форума  
 
Непрочитано 24.05.2010, 23:03
#11
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Цитата:
Сообщение от gomer Посмотреть сообщение
Почему-то заморские программисты не выставляют себя людьми недалекими... А пишут без Ашипок...
Ну хотя бы потому что они хорошо знают свой родной английский язык.
Заморский программист пишет:
Код:
[Выделить все]
(defun Hello_World ()
;;;
)
А нашему проще написать:
Код:
[Выделить все]
(defun privet_mir ()
;;;
)
mmax вне форума  
 
Автор темы   Непрочитано 24.05.2010, 23:14
#12
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от 357 Посмотреть сообщение
читаешь и находишь ошибки - помоги человеку их исправить. Люди вон с инженерным образованием по-русски пишут с ошибками (не путать с опечатками), а ты в лиспе грамотности и изящества хочешь
Вот этого люди больше всего и не любят Но это другая тема... Просто я от некоторых программ на форуме получаю эстетическое удовольствие, от друих нет... Побольше бы программ красивых и полезных

>mmax: Это не худший вариант... Он напоминает эру первых мобильных телефонов...

Код:
[Выделить все]
(defun Привет_мир ()
;;;
)
Тоже ведь подойдет...

Код:
[Выделить все]
(defun Превед_медвед ( / медвед)
;;;
  медвед
)
Это уже не смешно

Последний раз редактировалось gomer, 24.05.2010 в 23:23. Причина: Ашипки и Очипятки в тексте
gomer вне форума  
 
Непрочитано 24.05.2010, 23:27
| 1 #13
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


gomer Вы такой красноречивый и правильный. Поделитесь красивыми собственноручно написанными программами полезными проектировщикам. Критиковать то голословно проще всего... Крик души? Флуд? Мне кажется что флуд... Поправьте меня если я не прав. Я такой правильный и меня вымораживает когда в коде делают ошибки...Ваши слова! Бесполезная тема для меня во всяком случае... Думал что-то новое узнаю... Зря потратил время
Mozgunov вне форума  
 
Автор темы   Непрочитано 24.05.2010, 23:44
#14
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


>Mozgunov: Возможно, вы правы... и это флуд...
сравните:
Код:
[Выделить все]
 (setq AcApp (vlax-get-acad-object))
и
Код:
[Выделить все]
 (setq *vlaAcApp* (vlax-get-acad-obgect))
Первый код будет работать, не смотря на неуклюжесть...
Второй - нет... названия встроенных функций, свойств и методов приходится писать правильно... Так почему бы правильно не писать и все остальное?
gomer вне форума  
 
Непрочитано 25.05.2010, 00:00
#15
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


gomer, а если верно писать имена встроенных функций, то оба кода будут работать:
Код:
[Выделить все]
_$ (setq *vlaAcApp* (vlax-get-acad-object))
#<VLA-OBJECT IAcadApplication 00000001409b2e28>
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.05.2010, 00:41
#16
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
(setq *vlaAcApp* (vlax-get-acad-object))
  1. Указание на то, что переменная глобальна;
  2. Указание на тип (vla-указатель);
  3. Собственно что мы запоминаем

Неужели, так сложно... пора задумываться о стандартизации в лисп-программировании
gomer вне форума  
 
Непрочитано 25.05.2010, 00:45
#17
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Я глобальные переменные могу именовать и так:
global-pointer-current-document-text-style
obj-acad
А внедокументные, например, так:
ext-list
bb-value
И что? Имена переменных и внутренних функций никому кроме программиста, как правило, неинтересны.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.05.2010, 01:08
#18
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
И что? Имена переменных и внутренних функций никому кроме программиста, как правило, неинтересны.
Я, обычно, местные переменные делаю из одной буквы, или буквы и цифры.
например:
Код:
[Выделить все]
(lambda(a b c)...
или
Код:
[Выделить все]
(setq a1 5 
        a2 15 
        a3 25)
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 25.05.2010, 01:25
#19
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
(setq a1 5
a2 15
a3 25)
Вот здесь все понятно: углы 1, 2, 3 равны соответственно 5 15 и 25
gomer вне форума  
 
Непрочитано 25.05.2010, 01:53
#20
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Совсем необязательно...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.05.2010, 08:42
| 1 #21
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Цитата:
Сообщение от gomer Посмотреть сообщение
Это, конечно, личное дело каждого пишущего...
Дальше как бы можно и не обсуждать.
Makswell вне форума  
 
Непрочитано 25.05.2010, 08:54
#22
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


gomer, вот я, не смотря на то, что инженер, абсолютно неграмотный в отношении русского языка, мне честно стыдно, но поделать с этим я ни чего не могу, меня немного спасают встроенная во все современные программы "Проверка орфографии".
И имея средние знания англицкого, я легко могу обозвать свою функцию Hello_Mir и переменную не List_block_attribute, а Spisok_Blok_attrib, или даже sba, да хоть trja_lja_lja, и какое тебе нафиг до этого дело? Если бы я вдруг писал код на конкурс, или в для кого-то в обучающих целях, я бы возможно тогда бы ещё задумался об именах функций и переменных. Как правило мы(мелкие самоучки программисты) пишим программу для конкретного пользователя, которому дела нет что там вообще за код, на сколько он оптимален и устойчив, ему главное чтоб при запуске, у него с программой был понятный и адекватный диалог.
Например вот, одна из моих самых первых программ Калькулятор для набора, меня там KAI раскритиковал
Цитата:
>>"Выберете строки содержащие \nчиловые значения, для \nдольнейшей операции с ними"
А дальше уже и смотреть не хочется, нас не уважают.
, я конечно потом подправил код, но выложил его в другом месте, и им до сих пор геодезисты пользуются и радуются, но мне было стыдно, и я долго стеснялся потом появляться на форуме, да и вообще программировать.
Это сейчас
Цитата:
А я уже взрослый,
А мне уже можно вовсю,
Иду по улице
Иду по улице
Иду по улице и никого не сю

Дмитрий Соколов «Чаинки»
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Автор темы   Непрочитано 25.05.2010, 16:27
#23
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Кстати про интерфейс... некоторые работают годами с какой-то программой и ничего не замечают но, если свежим взглядом взглянуть...
gomer вне форума  
 
Непрочитано 25.05.2010, 22:34
#24
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от gomer Посмотреть сообщение
Вот здесь все понятно: углы 1, 2, 3 равны соответственно 5 15 и 25
У меня это не углы, а просто первая группа переменных, потом идут b1, b2, b3...

ps. По основной теме, во встроенном редакторе, нет возможности проверки правописания, тем более на русском. Вообще - то, жаль...
Елпанов Евгений вне форума  
 
Непрочитано 26.05.2010, 07:46
1 | 1 #25
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Вот буквально сегодня писал код и назвал функцию selext_popup_list, сам не пойму то ли опечатавший, то ли руки кривые, и когда начал на неё ссылаться(вызывать) заметил опечатку, и не будь этой темы, я бы исправил на seleсt_popup_list, но теперь из принципа пришлось оставлять как есть.
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Автор темы   Непрочитано 26.05.2010, 08:04
#26
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


>Disney: не ограничивайте себя ни в чем и не следуйте ни за толпой, ни против... У меня такое часто происходит, и я исправляю...

>Елпанов Евгений: Вам можно, вряд ли вы потеряетесь в своей программе... Это мировая практика: a - угол, p-точка... Кстати, проверка правописания добавляется в Notepad++
с помощью плагина... Но опять же не удалось мне его установить Может поможет кто?
gomer вне форума  
 
Непрочитано 26.05.2010, 08:12
1 | 1 #27
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Цитата:
Сообщение от gomer Посмотреть сообщение
Это, конечно, личное дело каждого пишущего, но мне, если честно, уже надоело видеть в кодах названия переменных и польз. функций, написанные с ошибками
Да, невыносимую жизнь создали эти лиспописаки автору темы. Просто удивительно, как это их терпят и VVA, и Елпанов Евгений, и kpblc, и ..., и даже ShaggyDoc...
Profan вне форума  
 
Непрочитано 26.05.2010, 08:55
| 1 #28
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


О чем спор?
В любом руководстве по программированию на LISP написана примерно такая фраза: "Имена переменной, функции, аргумента, состоят из прописных или строчных букв, цифр и знаков, за исключением круглых скобок, точки, апострофа, кавычек, точки с запятой."
А в каком порядке и в каких сочетаниях эти символы написаны интерпретатор LISPa абсолютно не щекотит.
ИМХО скверно, если эти функции не работают или работают неправильно.
E-degtyarev вне форума  
 
Непрочитано 26.05.2010, 10:51
#29
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


а есть ли здесь кто-нибудь, кто использует кириллицу? типа
Код:
[Выделить все]
(setq Точка (getpoint))
Vov.Ka вне форума  
 
Непрочитано 26.05.2010, 10:57
#30
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


А зачем? Это ж не 1С с его конструкциями "Если Тогда КонецЕсли"
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.05.2010, 10:59
#31
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,992


Цитата:
Сообщение от Vov.Ka Посмотреть сообщение
а есть ли здесь кто-нибудь, кто использует кириллицу? типа

Код:
(setq Точка (getpoint))

Я!
Причем в гораздо более радикальной форме.
Например (легкая радикальная форма):
Код:
[Выделить все]
(setq сраная_точка (getpoint))
Но чаще использую тяжелую.

Ну и что?
Nike вне форума  
 
Непрочитано 26.05.2010, 11:28
1 | 1 #32
Capiton


 
Регистрация: 11.03.2009
Тюмень
Сообщений: 109
<phrase 1=


Согласен со всеми критиками аввтора темы.
Просто сказать, что Вас достали все безграмотные LISP программисты - это 2 балла.
Вот если бы Вы, gomer, предтавили своё вИденье наиболее рационального, понятного и "эстетичного" стиля программирования на LISP (хотябы AutoLISP) и не в восьми строках, а на восьми страницах со всеми ньюансами и исключениями - вот это твердые 4 балла и заявка на 5 (после обсуждения - исправления - публикации в разделе "публикации"). И тема была бы интересная.
Capiton вне форума  
 
Непрочитано 26.05.2010, 12:01
#33
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


В качестве задела: http://autolisp.ru/2009/09/12/code-formatting/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.05.2010, 12:43
#34
Capiton


 
Регистрация: 11.03.2009
Тюмень
Сообщений: 109
<phrase 1=


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

Безграмотностью почему-то считают неиспользование локальных переменных. По моему мнению "локализовать" переменные разумно лишь при публикации кода в его окончательной редакции, а до тех пор часто глобальные переменные позволяют отслеживать ход выполнения кода и ошибки в нем гораздо быстрее и удобнее чем средства LISP редактора

Последний раз редактировалось Capiton, 26.05.2010 в 12:49.
Capiton вне форума  
 
Непрочитано 26.05.2010, 13:10
#35
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Вот это как раз не аргумент - "отслеживать выполнение". По крайней мере при разработке внутри VLIDE: http://autolisp.ru/2009/09/16/lambda-functions/ ; http://autolisp.ru/2009/09/10/vlide-misc-01/ ; http://autolisp.ru/2009/09/12/vlide-misc-02/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.05.2010, 14:12
#36
Capiton


 
Регистрация: 11.03.2009
Тюмень
Сообщений: 109
<phrase 1=


VLIDE обладает хорошим набором средств для анализа подробно описанным в многих источниках, но...
1. Анимация выполнения кода часто хлопотна, бесполезна или вообще не работает.
2. Точки останова хорошее средство, но для того чтобы их грамотно расставить нужно сначала частично разобраться и проанализировать ошибку, что не всегда возможно, когда у тебя все переменные nil. А потом надо еще не забыть все их снять.
3. Прерывание на ошибке... "Кривой" фрагмент кода может вполняться и без прерываний.
4. Watch window удобен для отслеживания ключевых (обычно и так глобальных) переменных в коде. Заносить в него все переменные подряд неудобно и ненаглядно. К тому же он позволяет отслеживать переменные только при использовании точек остановки.
5. Окно отслеживания ошибок безсловно необходимо, но у него иные функции. Оно не предназначено для отслеживания состояния переменных.

Как не крутись без глобализма не обойтись
Capiton вне форума  
 
Непрочитано 26.05.2010, 14:57
#37
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


1. Не пользуюсь, так что сказать ничего не могу.
2. Надо анализировать не ошибку, а код.
3. Смотреть не только код, но и логику.
4. Кто сказал, что для "глобальных"? Инструментом надо пользоваться с умом.
5. Ничего не могу сказать, мне и без этого инструментария хватает
Резюме: покажи код, который при определенных условиях вываливает трудноуловимую ошибку. Я попробую снять видео по отладке.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.05.2010, 15:10
#38
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Алексей Кулик, видимо, не застал то время, когда VLIDE еще не было. И обратную трассировку не застал...
Profan вне форума  
 
Непрочитано 26.05.2010, 15:17
#39
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Ага, не застал.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.05.2010, 15:32
#40
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


Capiton, вот и проголосуй за расширение VLIDE: http://www.zoomerang.com/Survey/WEB22ALQR9G6P3
Александр Ривилис вне форума  
 
Непрочитано 26.05.2010, 19:14
#41
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


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

Причем стандарты могут быть разные, в зависимости от языка, среды программирования, а также с учетом определенных корпоративных требований. Вот сами стандарты - обсуждаются. Но это иной уровень - стоит ли, например, использовать "венгерскую нотацию", а вот "privet mir" обсуждению не подлежит.

Обсуждать же "безграмотность" это - всё равно, что спорить "надо ли мыть руки перед едой". Тем более, что всегда найдутся любители сообщить, что "я не мою, и ничё".
ShaggyDoc вне форума  
 
Непрочитано 27.05.2010, 10:00
#42
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Vov.Ka, с удивлением обнаружил, что (setq Точка (getpoint)) работает!!!
E-degtyarev вне форума  
 
Автор темы   Непрочитано 27.05.2010, 15:50
#43
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Вот, кстати, пример "безграмотной" переменной...

Код:
[Выделить все]
(if (= "INSERT" (dxf 0 BLK_ENT2))
		  (setq
			NAM_2 (dxf 2 BLK_ENT2)  ; new block name
			LYR_2 (dxf 8 BLK_ENT2)  ; new block layer
			ROT_2 (dxf 50 BLK_ENT2) ; new block rotation
			XSF_2 (dxf 41 BLK_ENT2) ; new block X-scale
			YSF_2 (dxf 42 BLK_ENT2) ; new block Y-scale
			ZSF_2 (dxf 43 BLK_ENT2) ; new block Z-scale
	         *dummy*(prompt (strcat "\nBlock \"" NAM_2 "\" selected."))
		  )
		  (setq
			#BLK2 nil
	   	 *dummy*(prompt "\nSelected object is not a Block. Try again.")
		  )
		)
Переменная *dummy* позволяет вместо функции progn использовать setq
gomer вне форума  
 
Непрочитано 28.05.2010, 09:15
#44
Евгений А.

Армспорт
 
Регистрация: 18.07.2006
Ейск
Сообщений: 355


Цитата:
Сообщение от gomer Посмотреть сообщение
Переменная *dummy* позволяет вместо функции progn использовать setq
сам-то понял что написал?
Это - не "безграмотность", а творческий подход!
Евгений А. вне форума  
 
Автор темы   Непрочитано 28.05.2010, 14:47
#45
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Евгений А. Посмотреть сообщение
сам-то понял что написал?
gomer вне форума  
 
Автор темы   Непрочитано 07.06.2010, 16:55
#46
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Вот накопал про названия переменных Любопытно
Цитата:
AutoLISP lessons
By; David A. Seibert

LESSON5

...

VARIABLE NAMING:

When we discussed comments in lesson 3, we neglected to touch on the
easiest method of commenting of all; variable names. If you use proper
variable names, much of your code can be self-documenting. You need only
add comments to code which is not clear simply by reading it.

Variables can be named anything you want providing the first character
is alphabetic, and you don't use the reserved characters from lesson 2.

Many AutoLISP programmers try to keep variable names to (6) six
characters or less. This is due to the way variables are stored in
AutoLISP. If a variables name is less than 6 characters AutoLISP only
requires (2) two nodes to store the value. If you make the variable name
longer than (6) six characters, AutoLISP stores the value in one node
and stores a pointer to the name in the other node. The name itself is
stored in memory taken from the heap for string storage. Heap space is
limited and that is why some programmers try to keep variable names
short.

Two things have happened that makes this rule not so carved in stone as
it used to be. The advent of virtual memory and learning how to program
cleanly have done much to solve the problem of running out of memory. I
can't do much about the amount of memory in your comuter or the amount
of memory AutoCAD needs, but I can show you how not to run out of memory
by programming in a clean manner.

Anyway, back to naming variables.

Naming a variable is not like naming the family pet, you can't choose a
name cause it's cute or it's what the variable looks like. You need to
choose names based on what it is the variable holds. You must look at
the variable and its name as being the same thing. If you can't tell
what the variable is, maybe you don't need the variable anyway.

If a variable holds the point for a line, state that in the variable
name. First tell which line, and then tell which point. Variables can be
named well or they can be named badly, it's all up to you.

Good:

CenterLineStart
CtrLnStrt
CtrLnEnd

Bad:

C1 ;Start of centerline
C2 ;End of centerline

The bad variable names have been made sightly more palletable by the use
of comments to say what they are, but the good variable names are much
more discriptive and require no comments. Anyone who has programmed for
awhile knows comments rarely come easy and sometimes not at all. It is
better to give your variables names which do not need explained, so a
missing comment later will not lead to confusion about what the variable
is holding.

Also note that end-line comments no matter how well done, clutter up
code and make it harder to read. If you can avoid using end-line
comments, you will be much better off.

Some times you have many variables that seem to hold the same type
values. They may seem the same but there is always something different
about them that the name can tell you.

Good:

TapDrillCenterLineStart
TapDrCtrLnStrt
TapDrCtrLnEnd

TapCenterLineStart
TapCtrLnStrt
TapCtrLnEnd

Bad:

TDCS
TDCE
TDS
TDE

I have seen programmers go as far as giving many pages of comments to
explain what each of thier variables was supposed to hold. Having a
decoder ring is no substitute for proper variable naming. If you give
full variable names you will have alot less commenting and alot easier
time when hunting problems.


Index variables ...

Indexes through a loop are one of the areas where it is sometimes
difficult to come up with a name. Many programmers have a name they give
to all indexes, such as Index, Idx, Ndx, or some such thing that they
are comfortable looking at. They know when they read thier code what
these things are, but others may not.

If you are going to use short names for indexes be sure to tell what it
is that you are indexing through.

Good:

PointNdx
ListNdx
FileNdx

Bad:

x
Idx
Ndx

An index variable is like any other variable and needs a proper name to
be truly understood.


Status variables ...

Status variables should be given names better than "flag". Everyone
seems to use flag for status variables. The first thing we have to do to
give truly meaningfull names to variables, is get away from thinking
about our problems from the viewpoint of the computer. A flag tells if
something is right or wrong, it should be given a name that reflects the
item we are checking.

Good:

FileDone
PrintDone
SortDone

Status variables are not used extensively in AutoLISP programming, but
if you use them, give them real names.


Naming guidelines ...

Variables should be named in a manner that also identifies thier scope
and / or type.

GLOBAL variables should be identifiable as such by reading thier name.
Some people use prefix or suffix notations to accomplish this. An
example would be to add a g or g_to the beginning of the variable name:

gScrewList

This identifies the variable as a list that is available to all the
functions in your program. I am not a fan of putting the "_" character
in variable names as a seperator. I prefer the nameing convention where
you capitalize the first letter of each word or abbreviation in the
variable name.

CONSTANTS are normally capitalized as a way of identifying them. They
stand out from the rest of your code so you know they are a constant.

INPUT variables, which are parameters to a function, should not be
modified inside the function. It is recommended that you identify input
variables so if you see one getting modified you can do something else.
It will be alot easier to read your code and tell which variables are
parameters if you identify them in the name. An "i" or "ip" may be
prefixed to the name to identify them.
gomer вне форума  
 
Непрочитано 07.06.2010, 17:01
#47
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Я любую переменную, названную как gFileHadle нажатием всего трех клавиш на клавиатуре в vlide моментально приведу к виду gfilehandle.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 07.06.2010, 23:44
#48
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Зачем?
gomer вне форума  
 
Непрочитано 07.06.2010, 23:49
#49
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Не зачем, а почему
Потому, что в AutoLISP понятие регистрозависимости отсутствует, т.е. переменные adoc, Adoc, aDoc и т.п. будут пониматься одинаково. Потому, что есть такое "волшебное" сочетание клавиш - Ctrl + Alt + F (форматировать код в соответствии с установленными настройками). А какие настройки будут у получателя кода - известно только ему.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 08.06.2010, 00:08
#50
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
в AutoLISP понятие регистрозависимости отсутствует
Метод существует для програмиста, а не для интерпретатора... В частности для понимания длинных названий методов и свойств в объектной модели
gomer вне форума  
 
Непрочитано 08.06.2010, 04:22
1 | 1 #51
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Вот накопал про названия переменных Любопытно
Это для совсем бестолковых и начинающих. Азбука, но "писатель" должен знать не только азбуку. Не всё же он будет писать "мама мыла раму".

Цитата:
Метод существует для програмиста, а не для интерпретатора... В частности для понимания длинных названий методов и свойств в объектной модели
Программист - это человекообразное существо. Иногда даже человекоподобное. А человеку свойственно ошибаться. Вот ошибки программиста и надо предотвращать

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

И не надо думать, что "со мной этого не случится".

Поэтому мы это учитываем. Например, используем длинные (иногда очень длинные) имена функций, в которых разделителем является дефис: ru-conv-millimeter-to-unit, ru-3d-point-by-2-points-and-dist, dwgru-get-number-as-radius и т.п.

А в именах переменных разделителем делаем знак _ чтобы визуально их выделять. У имен функций делаем префикс, например "ru-" или "kpblc-". Это предотвращает конфликт имен в разных программах.

Все имена в нижнем регистре - учитывается еще и то, что функции попадают на Linux-сервер в виде файлов, где регистр имеет значение.

Заодно я не использую в именах символ ">", хотя он и напрашивается. Это потому, что тексты функций приходится публиковать в XML, а там это специальный символ.

И так далее....
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 08.06.2010, 07:50
#52
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Все имена в нижнем регистре - учитывается еще и то, что функции попадают на Linux-сервер в виде файлов, где регистр имеет значение
Расскажите поподробнее,пожалуйста Я понимаю так, что лиспы, хоть и лежат на линуксе, загружаются в интерпретатор в среде уиндоуз...
Просто это самый "короткий" способ... и кто мешает делать бекап?
gomer вне форума  
 
Непрочитано 08.06.2010, 14:22
#53
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Я понимаю так, что лиспы, хоть и лежат на линуксе, загружаются в интерпретатор в среде уиндоуз.
Файлы лежат на веб-сервере. Н в какой интерпретатор они не загружаются. Каждая функция (а их около 3 тыс) - файл. Соответственно и каталоги. Всё только в нижнем регистре - раз и навсегда, для простоты и однозначности. Потому что ещё и FTP-клиенты могут автоматически имена в нижний регистр переводить.
ShaggyDoc вне форума  
 
Непрочитано 08.06.2010, 14:51
#54
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Извиняюсь за отклонение от основной темы...
Цитата:
Файлы лежат на веб-сервере
Сергей Александрович. Правильно ли я понял, что часть файлов (функций) вы динамически подгружаете на клиентские машины с ftp (http) сервера. Если да, и если не секрет, какова основная цель этой затеи?
Или это для Update?
__________________
...в шее моей жилы железные, и лоб мой - медный...

Последний раз редактировалось Pastor, 08.06.2010 в 15:29.
Pastor вне форума  
 
Непрочитано 08.06.2010, 14:59
#55
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Я сейчас тоже пришел к такому (зря я умных людей сразу не послушал). Основная проблема (по крайней мере у меня) - обновление функционала, исправление ошибок и т.п. Замучаешься бегать по нескольким десяткам клиентов - пускай уж лучше с сервера грузят все что можно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 08.06.2010, 15:59
#56
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Вообще ничего не понимаю!!!!!!!!
Как может измениться содержимое файла?????
А если он зашифрован???
А если он скомпилирован?
А если это arx или нет???
Я об этом
ps И как это не загружаются?

Последний раз редактировалось gomer, 08.06.2010 в 16:07.
gomer вне форума  
 
Непрочитано 08.06.2010, 16:35
#57
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от Pastor Посмотреть сообщение
Извиняюсь за отклонение от основной темы...

Сергей Александрович. Правильно ли я понял, что часть файлов (функций) вы динамически подгружаете на клиентские машины с ftp (http) сервера. Если да, и если не секрет, какова основная цель этой затеи?
Или это для Update?
Файлы исходников лежат не для загрузки в AutoCAD, а для ТехКомуПоложено. Это просто файлы - на многих сайтах так делается.

Для работы используются откомпилированные файлы. В принципе их можно автоматически загружать из Интернет для обновления. Технически - ничего сложного. Но у нас пока народ к этому не готов - не все имеют доступ, козни местных админов и прочее. Поэтому периодически сами скачивают инсталляционные сервис-паки.
ShaggyDoc вне форума  
 
Непрочитано 08.06.2010, 16:38
#58
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,835
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
..... Основная проблема (по крайней мере у меня) - обновление функционала, исправление ошибок и т.п. Замучаешься бегать по нескольким десяткам клиентов - пускай уж лучше с сервера грузят все что можно.
Алексей, ты имеешь ввиду клиентов своей сети или уличных?
Если свои, то это обновление проблема твоего сисадмина. Вот я сейчас читаю из памятки своего:
"Обновления выполняемые при загрузке ПК пользователя"
.....
п.4. rem Обновление Паркса
start \\ХХХ-server\Updates$\ParUpd.exe
rem Обновление Паркса из папки \\ХХХ-server\updates$\PARKS
, где ParUpd.exe выполняет простое копирование файлов на ПК пользователей из папки с обновлениями.
....
Если уличные, то кто будет делать им обновление, если они не хотят?
А если хотят, спасает какой-то обычный, присланный тобой патч, по-типу самораскрывающегося архива.
Уж больно не люблю я независимые от меня обновления, по-типу MS Windows...
P.S. Сеть существует для того, чтобы бегать вдоль неё с дискеткой
PPS. Пока писал ShaggyDoc дал разъяснение своей позиции. Согласен с ней
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...

Последний раз редактировалось Alan, 09.06.2010 в 15:54.
Alan вне форума  
 
Непрочитано 09.06.2010, 10:41
1 | 1 #59
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


.. потраченный час моего времени...
лучше б написали чего полезного ....
-> gomer : такое чуство что вы - преподаватель в каком-нибудь институте, и вам захотелось "поучить" теории трудяг на этом форуме. Дайте плз в эту ветку ссылку на пример Вашей программы, обсудим грамотность, ... да и полезность заодно...
kakt00z вне форума  
 
Автор темы   Непрочитано 09.06.2010, 15:37
#60
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


>kakt00z
А я то думаю, рабочий день в разгаре, а тут народу прудпруди...
gomer вне форума  
 
Непрочитано 09.06.2010, 16:11
#61
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Безграмотность лиспописателей
на мой взгляд "безграмотность" о которой идёт речь, начинается в голове человека, и не важно на лиспе он пишет либо на др. языке. В той или иной степени мы все этим грешим (одни в большей степени, другие - в меньшей)...

имхо.
hwd вне форума  
 
Автор темы   Непрочитано 09.06.2010, 16:30
#62
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от hwd Посмотреть сообщение
"безграмотность" о которой идёт речь, начинается в голове человека
Есть распространенное заблуждение, что у нас когда-то было самое лучшее в мире образование... А то, что сейчас, его остатки... так меня некоторые усердно уверяют... Да, мы летали в космос, и что? А как это сейчас чертить за кульманом (причем немецкого производства... а где же наше?) на чешской бумаге польскими карандашами, в помещении с заклеенными (а вот оно наше) окнами и без кондиционера (корейского)? Это грамотно?
gomer вне форума  
 
Непрочитано 09.06.2010, 16:34
#63
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от gomer Посмотреть сообщение
Это грамотно?
софистика.
hwd вне форума  
 
Автор темы   Непрочитано 09.06.2010, 16:43
#64
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


ага, уже почти столетие
gomer вне форума  
 
Непрочитано 09.06.2010, 18:27
1 | 1 #65
Евгений А.

Армспорт
 
Регистрация: 18.07.2006
Ейск
Сообщений: 355


Цитата:
Сообщение от gomer Посмотреть сообщение
Есть распространенное заблуждение, что у нас когда-то было самое лучшее в мире образование... А то, что сейчас, его остатки... так меня некоторые усердно уверяют... Да, мы летали в космос, и что? А как это сейчас чертить за кульманом (причем немецкого производства... а где же наше?) на чешской бумаге польскими карандашами, в помещении с заклеенными (а вот оно наше) окнами и без кондиционера (корейского)? Это грамотно?
А оно и было самое лучшее, а вот у вас какое-то детское восприятие окружающего мира, думаю ход ваших мыслей примерно таков: "я уже всё узнал о программировании и даже о мировой истории, все точки над "i" поставлены - у нас всё плохо, а на западе всё прекрасно, какой я молодец! Ну ка пойду других просвещать..." - угадал?
Евгений А. вне форума  
 
Непрочитано 09.06.2010, 18:40
#66
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от gomer Посмотреть сообщение
ага, уже почти столетие
я о том, что "образование, космос и карандаши" никак не соотносятся к топику.
hwd вне форума  
 
Автор темы   Непрочитано 09.06.2010, 18:41
#67
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


>hwd: в таких условиях не удержать грамотного лиспописателя
Цитата:
Сообщение от Евгений А. Посмотреть сообщение
думаю ход ваших мыслей примерно таков
Евгений А., мне приятно, что вы заботитесь как программист о пользователях
Как вам такой диалог:
Цитата:
- Ткни куда нить...
- хУысъ [Esc]
- Точку ткни, придурок!
И так пока не ткнешь

Последний раз редактировалось gomer, 09.06.2010 в 18:47.
gomer вне форума  
 
Непрочитано 09.06.2010, 19:29
#68
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,992


Цитата:
Сообщение от gomer Посмотреть сообщение
- Ткни куда нить...
- хУысъ [Esc]
- Точку ткни, придурок!
Отличный диалог! Возьму на вооружение
Цитата:
(if (not (vl-catch-all-error-p
(vl-catch-all-apply '(lambda () (vla-getentity util 'ent nil "\nУкажите блок <Выход> : ")))
) ;_ end of vl-catch-all-error-p
) ;not
(if (and ent (= (vla-get-objectname ent) "AcDbBlockReference")) ;_ end of and
(progn (setq block (vla-item (vla-get-blocks adoc) (vla-get-name ent))) ;setq
(if (= (setq new_name (getstring T (strcat "\nНовое имя <" (vla-get-name block) "> : "))) "") ;=
(setq new_name (vla-get-name block))
) ;if
(vla-put-name block new_name)
) ;progn
(alert "Это не блок, дубина!")
) ;if
(alert "Целься точнее, мазила!")
)
Привет лиспоэстетам!
Nike вне форума  
 
Автор темы   Непрочитано 09.06.2010, 19:58
#69
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Nike Посмотреть сообщение
(if (not (vl-catch-all-error-p
(vl-catch-all-apply '(lambda () (vla-getentity util 'ent nil "\nУкажите блок <Выход> : ")))
) ;_ end of vl-catch-all-error-p
) ;not
(if (and ent (= (vla-get-objectname ent) "AcDbBlockReference")) ;_ end of and
(progn (setq block (vla-item (vla-get-blocks adoc) (vla-get-name ent))) ;setq
(if (= (setq new_name (getstring T (strcat "\nНовое имя <" (vla-get-name block) "> : "))) "") ;=
(setq new_name (vla-get-name block))
) ;if
(vla-put-name block new_name)
) ;progn
(alert "Это не блок, дубина!")
) ;if
(alert "Целься точнее, мазила!")
)
Здесь налицо переход с "Вы" на "ты" при ошибке пользователя, пренебрежительное снисхождение к нему... это по крайней мере не культурно Но... как знаете
зы, если при запросе нового имени блока нажать изкейп, что будет?
gomer вне форума  
 
Непрочитано 09.06.2010, 20:00
#70
Meknotek

Проектирование заборов уже в прошлом
 
Регистрация: 29.10.2009
Рязань
Сообщений: 2,089


Цитата:
Сообщение от gomer Посмотреть сообщение
Здесь налицо переход с "Вы" на "ты" при ошибке пользователя, пренебрежительное снисхождение к нему... это по крайней мере не культурно Но... как знаете
зы, если при запросе нового имени блока нажать изкейп, что будет?
"Цельтесь точнее, мазила" - на "Вы", наверно достаточно культурно
Meknotek вне форума  
 
Автор темы   Непрочитано 09.06.2010, 20:04
#71
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


После нескольких лет переименования блоков (по несколько блоков в день) пользователь поверит, что он "дубина"
gomer вне форума  
 
Непрочитано 06.02.2012, 02:59
#72
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


так пришли к косенсусу?
аль лиспописатели и дальше безграмотными останутся? ))
про
"Здесь налицо переход с "Вы" на "ты" при ошибке пользователя, пренебрежительное снисхождение к нему... это по крайней мере не культурно Но... как знаете
не преврашайтесь из ПРОГРАММИСТОВ в ЮРИСТО-УБОРЩИЦ

ну пожалуйста )))
kakt00z вне форума  
 
Автор темы   Непрочитано 06.02.2012, 19:25
#73
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


я просто жду момента, когда код отсюда будет всучен какой-нибудь неустроенной бабуле-конструкторше ушлым инженером-новатором 3к
плз, пишите видео...
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Безграмотность лиспописателей

Размещение рекламы