'Programming'에 해당되는 글 1747건

  1. 2012.01.25 lisp 관련 책
  2. 2012.01.25 프로그래밍 언어에 대한 생각 2
  3. 2012.01.24 lisp 문법
  4. 2012.01.24 slime / lispbox
  5. 2012.01.15 스택기반의 프로그래밍 언어 - forth 2
  6. 2012.01.15 우분투에서 lisp 설치하기
  7. 2012.01.15 리팩토링 (refactoring)
  8. 2012.01.14 forth / gforth
  9. 2011.11.22 glsl과 glew의 연관관계
  10. 2011.11.20 GLSL 관련 링크
Programming/lisp2012. 1. 25. 19:05
예전 학교수업시간에 쓰던 책인데 4th ed였던데 벌써 9th ed 라니...
간략하게 프로그래밍 언어중 함수적 언어에서 나오는데
막상 따라하려니 버전이 달라서 list? 이런 명령어는 먹지 않는다 -_-


내용 정리
모든 identifier는 atom이며 ' (quote) 를 통해서 list에 넣거나 함수의 식별자로서 사용이 가능해진다.
APPEND 명령은 CONS(constructor) 명령을 통해 재귀적으로 앞의 리스트에 붙이는 개념이다.




문득 lisp를 인공지능에서 사용하는 이유중에 하나가
car 명령을 통해 주어를 빼내고 cdr 명령을 통해 주어를 제외한 문장을 빼내는 식으로
동사 / 목적어 이렇게 분리를 하면서 구문 분석을 손쉽게 할 수 있기 때문이 아닐까? 라는 생각이 들었다.

[링크 : http://www.pearsonhighered.com/.../Concepts-of-Programming-Languages/9780201385960.page]

'Programming > lisp' 카테고리의 다른 글

클로져  (0) 2012.12.03
lisp는 리스트지 prefix 표기법이 아니다  (0) 2012.11.19
lisp 문법  (0) 2012.01.24
slime / lispbox  (0) 2012.01.24
우분투에서 lisp 설치하기  (0) 2012.01.15
Posted by 구차니
Programming2012. 1. 25. 18:40
연휴이고 하니 이것저것 파고 들고
마침 회사에서도 micom을 AVR에서 TI로 바꾸는 바람에 API를 보고 있는데

"내가 공부하는게 언어일까 API일까?" 라는 의문이 들었다.




솔찍히 말해서 C언어에서 배우면서 어려운 단계를 적다면
1. for 문 / while 문
2. array
3. 배열
4. 그리고 printf() scanf()

머 나오는 순서로 따지면 4번이 0 번이 될 가능성이 높은데
언어와 통합이 되어 있다고 할정도로 stdio / stdlib 가 필수적이긴 하지만
이걸 언어에 포함을 해야 할까? 라는 의문이 든다.

다른 언어들을 공부하면서도
솔찍히 파일 입출력이 없고 printf 같은 화면에 출력하는 방법이 없으면 사용이 많이 제약이 되는 것을 보면
api 자체를 (비록 언어에 통합이 되어 있는 기본 라이브러리라고 해도) 언어에 포함을 해야 할까? 라는 생각이 든다.

micom의 경우는 조금 더 심해서 하드웨어 종속적인 부분이 많이 다른데
둘다 C를 기반으로 하지만 하드웨어 핀 배열등이 다른데 이걸 언어라고 표현하지 않고 장비라고 하는 것을 보면
우리가 표현하는 언어를 배운다는 말은 실은 API를 배운다 라고 해야 하는게 맞지 않을까 라는 망상마저 드는데.. 




아무튼 새로 나오는 언어들은 오만 라이브러리들을 기본내장하고 나오는 것을 보면 언어의 정의가 바뀐것 같기도 하고.
단순하게 제어 반복문 이나 함수 / 변수 구조등만을 언어로 규정짓는 것 또한 바보같은 발상인것 같긴한데... 

'Programming' 카테고리의 다른 글

ARToolKit / openVRML  (0) 2012.12.25
윤년 계산하기  (2) 2012.05.21
TBB/IPP  (2) 2012.02.12
S language  (0) 2011.07.01
SRS Template  (0) 2011.06.19
Posted by 구차니
Programming/lisp2012. 1. 24. 18:07
연휴이고 하니 뜬금없이 LISP 공부중인데 전에도 이해 못했고 이번에도 이해 못하고 있는 lisp -_-
LISP는 LISt Process 의 약자로
이름대로 모든것으로 LIST 에 기반하여 표현하게 되며, 리스트는 () 로 둘러쌓여 표현된다.
이러한 이유로 lisp 소스를 보면 ()가 가득히 둘러쌓여 가독성이 떨어지는 형태가 된다.

또한 리스트에서 계산등은 모두 전위표기법을 사용하게 되며 기본 연산은 다음과 같이 표현된다.
CL-USER> (+ 1 2 ) ; 1 + 2
3
 
CL-USER> (- 1 2 ) ; 1 - 2
-1
 
CL-USER> (/ 1 2) ; 1 / 2
1/2
 
CL-USER> (* 1 2) ; 1 * 2
2
 
CL-USER> (mod 3 2) ; 3 % 2
1
 
CL-USER> (log 2) ; log(2)
0.6931472
 
CL-USER> (sqrt 2) ; sqrt(2)
1.4142135 

CL-USER> (< 1 2) ; 1 < 2
T 

그리고 기호를 가지는 변수(?)는 setq 명령어를 이용하여 선언한다. 
val을 입력하면 해석할 수 없는 변수이기 때문에 에러가 나지만 setq를 통해서 값을 정해주면
val만 입력해도 입력했던 값이 나오게 된다.
CL-USER> val
Invoking restart: Return to sldb level 2.
; Evaluation aborted on #<UNBOUND-VARIABLE #xC7B642E>.

CL-USER>
(setq val 100)
100

CL-USER> val
100 

CL-USER> (setq str "This is test string")
"This is test string"
 
CL-USER> str
"This is test string" 
 
아무튼 defvar 라는 키워드를 이용해서 변수를 선언 할수도 있는데 setq와는 다르게 리턴되는 값이 다르다
CL-USER> (defvar loop 10)
LOOP
 
CL-USER> loop
10 
 
함수는 defun (DEFine + FUNction 인 듯?)을 통해서 선언이 가능하다.
단순하게 3을 리턴하는 함수로 three 라는 것을 만드는 예제이다.
> (defun three () 3)            
THREE                           

> (three)                       
3                               

> (+ (three) 1)                 
4          

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> three()                       
error: unbound variable - THREE 
> three                         
error: unbound variable - THREE 
> (+ three 1)                   
error: unbound variable - THREE  
 
인자를 사용하는 함수로 인자는 아래와 같이 사용한다.
CL-USER> (defun add (x y) (+ x y))
ADD

CL-USER> (add 3 4)
7 
 
리스트는 아래와 같이 '을 먼저 찍고 해주면 된다. (아직 이해 부족.. OTL)
물론 리스트도 setq로 선언하여 사용이 가능하다.
> '(1 2 3)             
(1 2 3)                

> (1 2 3)              
error: bad function - 1 

'/어포스트로피/apostrophe
'foo는 (quote foo) 와 동일하고 s expression 에서 함수가 아닌 것으로 해석하도록 하는 명령어이다.
어떻게 보면 변수로 인식시킨다고 해야 하려나? replace 라고 된것을 보면 -_-

Creating sets (actually, creating variables) can be done with setf : this creates a set called learned with three members:

(setf learned '(VB C++ LISP))

The apostrophe is uses to designate that something in brackets isn't a function (or an S-expression). Basically, if LISP receives something like (VB C++ LISP) it assumes VB is the name of a function and C++ and LISP are its arguments. The apostrophe says that this isn't a function, it's a list, and can itself be an argument in a function.

[링크 : http://homepages.paradise.net.nz/milhous/lisp.htm]  

The form 'foo is simply a faster way to type the special form

(quote foo)

which is to say, "do not evaluate the name foo and replace it with its value; I really mean the name foo".

I think SISC is perfectly fine for exploring the exercises in TLS. 

[링크 : http://stackoverflow.com/questions/1539144/what-is-apostrophe-in-lisp-scheme]  





리스프에 내장된 함수라고 해야하나 keyword 라고 해야하나 아무튼 그거 목록
[링크 : http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/] << 목록
    [링크: http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/clm.html] << 최상위

'Programming > lisp' 카테고리의 다른 글

lisp는 리스트지 prefix 표기법이 아니다  (0) 2012.11.19
lisp 관련 책  (0) 2012.01.25
slime / lispbox  (0) 2012.01.24
우분투에서 lisp 설치하기  (0) 2012.01.15
lisp  (0) 2011.05.05
Posted by 구차니
Programming/lisp2012. 1. 24. 10:04
slime 은 emacs와 lisp를 합쳐서 만든 통합 개발 환경이다.
Superior Lisp Interaction Mode for Emacs 라..
vi도 안친한데 emacs를 이용해서 어떻게 해야하나 하아..


[링크 :  http://common-lisp.net/project/slime/]


아무튼 간단하게 압축만 풀면 실행이 되는 slime for windows 프로그램이 있어서 투척
멋지게도 컬러풀하게 나오고 아래에서는 defun 이런거 입력하면 기본 유형이 나와준다.


[링크 :  http://common-lisp.net/project/lispbox/]   lispbox(slime for windows) 
[링크 :  http://www.cs.utexas.edu/~novak/gclwin.html] gnu lisp for windows


-----
우분투야 항상 그러하듯 slime 패키지를 설치하면 해결



일단 emacs를 실행하고 Alt-x 누른후 slime 이라고 입력한다.


그러면 clisp를 통해서 어쩌구 저쩌구 하고는 아래와 같이 프롬프트가 뜬다.


[링크 : http://akoumjian.blogspot.com/2007/10/clisp-in-emacs-using-slime-on-ubuntu.html]

'Programming > lisp' 카테고리의 다른 글

lisp는 리스트지 prefix 표기법이 아니다  (0) 2012.11.19
lisp 관련 책  (0) 2012.01.25
lisp 문법  (0) 2012.01.24
우분투에서 lisp 설치하기  (0) 2012.01.15
lisp  (0) 2011.05.05
Posted by 구차니
Programming/forth2012. 1. 15. 21:00
이 녀석을 어디서 주워들어서 이런 고난의 길(?)을 걷고 있는건지도 까먹었는데..
아무튼 이 녀석의 특징은 후위표기법(postfix)와 유사하다는 점이다.

스택에 넣기 때문에 이러한 특징을 보이는데
예를 들어 2 + 3 이라는 것을 위해서는 아래와 같이 입력을 하면된다.

2  ok
3  ok
+  ok
. 5  ok 

2 3 + . 5  ok 

위의 녀석이나 아래 녀석이나 마찬가지 이지만, 이해의 편의를 위해서 위에 것으로 설명을 하면
2 를 스택에 넣고
3 을 스택에 넣고
+ 연산을 하면 스택에서 2개의 값을 빼내서 더하고 다시 스택에 넣고
. 은 현재 스택을 보여주는데 가장 위에 5가 들어있게 된다.(결과로서)
 

솔찍히 스택을 배우는 법도 키워드가 어떤게 있는지도 모르겠고
무엇을 어떻게 해야할지 모르겠지만, 묘하게 끄는 매력이 있는 언어이긴 하다.
후위표기법으로 인해서 전위표기법을 사용하는 lisp와도 문법적인 연관성도 있어 보이긴 하지만.. 


예제 프로그램으로 RC4 암호와 루틴이라는데 어떻게 작동하는걸까나 -_-
[링크 : http://en.wikipedia.org/wiki/Forth_(programming_language)]

'Programming > forth' 카테고리의 다른 글

forth / gforth  (0) 2012.01.14
Posted by 구차니
Programming/lisp2012. 1. 15. 18:34
clisp 패키지로 제공한다.

$ sudo apt-get install clisp 

$ clisp
  i i i i i i i       ooooo    o        ooooooo   ooooo   ooooo
  I I I I I I I      8     8   8           8     8     o  8    8
  I  \ `+' /  I      8         8           8     8        8    8
   \  `-+-'  /       8         8           8      ooooo   8oooo
    `-__|__-'        8         8           8           8  8
        |            8     o   8           8     o     8  8
  ------+------       ooooo    8oooooo  ooo8ooo   ooooo   8

Welcome to GNU CLISP 2.44.1 (2008-02-23) <http://clisp.cons.org/>

Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2008

Type :h and hit Enter for context help.

[1]>  

---
2012.12.05 추가
clisp 종료시에는 (quit) 라고하면 된다. 

'Programming > lisp' 카테고리의 다른 글

lisp는 리스트지 prefix 표기법이 아니다  (0) 2012.11.19
lisp 관련 책  (0) 2012.01.25
lisp 문법  (0) 2012.01.24
slime / lispbox  (0) 2012.01.24
lisp  (0) 2011.05.05
Posted by 구차니
단순하게 함수 이름이나 바꾸고 그러는걸 리팩토링이라고 하는줄 알았는데
어떻게 보면, 내부 루틴을 함수로 꺼내내거나 하는식으로 유지보수가 편하도록 하는 행위이다.

소프트웨어 공학에서 리팩토링(refactoring)은 주로 '결과의 변경 없이 코드의 구조를 재조정함'을 뜻한다. 주로 가독성을 높이고 유지보수를 편하게 한다. 버그를 없애거나 새로운 기능을 추가하는 행위는 아니다. 사용자가 보는 외부 화면은 그대로 두면서 내부 논리나 구조를 바꾸고 개선하는 유지보수 행위이다. 

[링크 : http://ko.wikipedia.org/wiki/리팩토링]   

[링크 : http://www.ibm.com/developerworks/kr/library/os-ecref/]

'Programming > 소프트웨어 공학' 카테고리의 다른 글

디자인 패턴 - singleton  (0) 2014.04.02
매번 느끼는 서글프지만 인정하고 싶지 않은 것  (0) 2012.02.08
간트차트  (0) 2012.01.31
SRS / SDS  (0) 2011.06.20
CMMI / TMMI  (0) 2011.06.20
Posted by 구차니
Programming/forth2012. 1. 14. 11:15
forth는 꽤 좋다는데 흐음.. 머가 좋은진 미지수 -ㅁ-
안정적이고 저용량에 킹짱왕이라는데.. 공부할 자료가 그리 많지 않은건 좀... OTL
그리고 AVR용으로도 나와있다고 하니 한번 공부해볼만 할 듯. (디버깅 용도로 많이 쓰는것 같다)

[링크 : http://www.forth.org/] << 공식
[링크 : http://www.delorie.com/gnu/docs/gforth/gforth_toc.html] << 메뉴얼(tutorial)
[링크 : http://no-smok.net/nsmk/ForthLanguage

[링크 : http://win32forth.sourceforge.net/]
    [링크 : http://sourceforge.net/projects/win32forth/] << win32용 forth

[링크 : http://amforth.sourceforge.net/]



'Programming > forth' 카테고리의 다른 글

스택기반의 프로그래밍 언어 - forth  (2) 2012.01.15
Posted by 구차니
Programming/openGL2011. 11. 22. 21:04
소스들을 보면 glsl을 위해서는 항상 glew를 사용하는데
왜 사용하는지 문득 궁금해져서 뒤져보니

과거에 GLSL은 OpenGL 1.4의 extension으로 시작되었다고 한다.
그리고 ARB는 OpenGL ARB에 의해 공식적으로 승인된 Extension이라고 한다.

즉, GLSL 역시 Extention 이므로, GLEW(GL Extention Wrangler) 를 사용해서 
편리하게(?) 확장하여 사용을 하게 된다.

ARB - Extensions officially approved by the OpenGL Architecture Review Board
[링크 : http://www.opengl.org/resources/features/OGLextensions/]
[링크 : http://glew.sourceforge.net/basic.html]

Originally introduced as an extension to OpenGL 1.4, GLSL was formally included into the OpenGL 2.0 core by the OpenGL ARB.
[링크 : http://en.wikipedia.org/wiki/GLSL]
[링크 : http://en.wikipedia.org/wiki/OpenGL#Extensions


사족 : 그러고 보니. Nvidia는 Geforce 8000 이상부터 ATI는 HD 급 부터라고 한거 봐서는..
         Nvidia의 CUDA / ATI의 ATI Stream(OpenCL) 적용 하드웨어와 일치하는 느낌이 드는데..
         결국에는 GLSL은 특화된 CUDA/OpenCL 이라고 보면 되려나?

'Programming > openGL' 카테고리의 다른 글

openGL에서 AVI 동영상 재생하기  (0) 2013.04.09
openGL gcc에서 컴파일 하기  (0) 2012.06.02
GLSL 관련 링크  (0) 2011.11.20
GLSL 함수목록 정리  (0) 2011.11.20
GLSL 은.. intel 내장형으로는 무리?  (0) 2011.11.19
Posted by 구차니
Programming/openGL2011. 11. 20. 14:40
GLSL 관련 문서들 링크

개인적으로 in vec3 val, 이런게 보이길래 찾다보니
pdf 문서가 무진장 정리 잘되어 있는것 같아서 득템한기분임 ㅋㅋ

in 은 함수 안으로 들어가는 변수. 없으면 in과 비슷하다고 보면 될 듯하고
uniform은 GLSL과 어플리케이션의 변수를 공유하도록 하는 구분자이다.


[링크 : http://www.jrr.kr/entry/8-GLSL-Animation] << 펄럭이는 예제

[링크 : http://en.wikibooks.org/wiki/GLSL_Programming/Vector_and_Matrix_Operations] << 벡터 업 캐스팅/다운캐스팅
[링크 : http://www.opengl.org/documentation/glsl/]
    [링크 : http://www.opengl.org/sdk/docs/tutorials/TyphoonLabs/]
        [링크 : http://www.opengl.org/sdk/docs/tutorials/TyphoonLabs/Chapter_2.pdf] << 요거 좋은듯
 [링크 : http://en.wikipedia.org/wiki/GLSL]

'Programming > openGL' 카테고리의 다른 글

openGL gcc에서 컴파일 하기  (0) 2012.06.02
glsl과 glew의 연관관계  (0) 2011.11.22
GLSL 함수목록 정리  (0) 2011.11.20
GLSL 은.. intel 내장형으로는 무리?  (0) 2011.11.19
GLSL 관련 링크  (0) 2011.11.12
Posted by 구차니