파이썬은 "(쌍따옴표) 나 '(홀따옴표) 로 문자열을 변수에 저장한다.
특이하게도 """(쌍따옴표 3개) 라는 녀석이 있는데, 굳이 비유를 하자면 HTML의 <pre> 태그와 비슷한 느낌이다.

아래의 예를 보면, " 로 한녀석은 엔터치면 에러가 발생하는데 비해
>>> hello = "test
  File "<stdin>", line 1
    hello = "test
                ^
SyntaxError: EOL while scanning string literal

"""(쌍따옴표 3개)를 사용한 녀석은 아래와 같이 """ 가 나올때 까지 계속 입력을 받고, 자동으로 \n를 붙여준다.
>>> hello = """test
... asdf
... """

>>> hello
'test\nasdf\n'

>>> print hello
test
asdf

>>>

테스트 삼아 "와 '를 혼용해서 하는데 "와 "를 동시에 쓰면 문법에러가 발생한다.
이런 경우에는 \" 를 이용하여 구분을 해주어야 한다.
>>> ""test" ing"
  File "<stdin>", line 1
    ""test" ing"
         ^
SyntaxError: invalid syntax

>>> '"test" ing'
'"test" ing'

>>> "'test' ing"
"'test' ing"

Posted by 구차니
클래스 내부에 __init__ 메소드와 __del__ 메소드는
객체에서 말하는 constructor와 descructor를 의미한다(고 한다.)

파이썬은 객체지향도 지원해서 연산자 오버로딩도 지원하나보다.
__add__ __cmp__ 메소드를 통해 덧셈과 비교를 오버로딩한다.

[링크 : http://blog.naver.com/mindweaver/40001747916]

상속은
class DerivedClassName(BaseClassName):
class DerivedClassName(Base1, Base2, Base3):
이런식으로 상속/다중상속을 지원한다.

[링크 : http://docs.python.org/tutorial/classes.html]
Posted by 구차니
파이썬은 typeless 라고 해야 하나.. 만능형이라고 해야하나.
아무튼 전형적인 인터프리트 언어답게 변수를 알아서 인식한다.
하지만 여전히 적응이 안되는건.. 변수 선언방식.

C언어에서는 절대 용납되지 않을 문법이니까.. 익숙해져 보자.

>>> a,b = 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

>>> a,b = 0,1
>>> a
0
>>> b
1

예를 들어 int형이라면
c에서는 int a = 0, b = 1; 이라고 선언해야 하지만
파이썬에서는 a,b = 0, 1 이라고 선언한다.
변수 선언과 값 할당을 확실하게 좌/우 변으로 나누어진다.

그렇다고 해서 a = 0, b = 1 이렇게는 선언할수 없다. 흐음.. 모호한 느낌
Posted by 구차니
파이썬은 인터프리트 언어이고, 그런 이유로 tab이나 공백에 의해 문장을 구분한다.

아래는 공백이나 탭을 넣지 않고 while 문을 실행하여 발생한 에러이다.
>>> a,b = 0,1
>>> while b < 10:
... print b
  File "<stdin>", line 2
    print b
        ^
IndentationError: expected an indented block

아래는 탭을 이용하여 실행한 모습이다.
>>> a,b = 0,1
>>> while b < 10:
...    print b
...    a,b = b, a+b
...
1
1
2
3
5
8

아래는 공백을 이용하여 실행한 모습이다.
>>> a,b = 0,1
>>> while b < 10:
...  print b
...  a,b =b,a+b
...
1
1
2
3
5
8


Posted by 구차니
아.. 오묘한 언어의 세상 ㅠ.ㅠ

Note for C++/Java/C# Programmers
The self in Python is equivalent to the self pointer in C++ and the this reference in Java and C#.

[링크 : http://www.ibiblio.org/g2swap/byteofpython/read/self.html]

"네임스페이스"는 파이썬에서 변수를 담아두는 공간으로, 원래는 로컬, 모듈 전체, 빌트인 세 가지 네임스페이스를 찾도록 되어 있다가, 파이썬 2.1부터 상위에 싸여있는 것들도 찾도록 돼 있습니다.

[링크 : http://openlook.org/blog/2008/12/13/why-self-in-python-is-attractive/]

Posted by 구차니
Programming/C Win32 MFC2010. 1. 6. 09:57
expat 글 보다가 무슨 말인지 몰라서 검색은 해봤는데 점점더 미궁으로 빠져드는 느낌이다 ㄱ-
일단은 call stack 관련 선언문이라는것 외에는 이해를 전혀 못하겠다 ㅠ.ㅠ

cdecl
    On the Intel 386, the cdecl attribute causes the compiler to assume that the calling function will pop off the stack space used to pass arguments. This is useful to override the effects of the -mrtd switch.
   
stdcall
    On the Intel 386, the stdcall attribute causes the compiler to assume that the called function will pop off the stack space used to pass arguments, unless it takes a variable number of arguments.
   
fastcall
    On the Intel 386, the fastcall attribute causes the compiler to pass the first two arguments in the registers ECX and EDX. Subsequent arguments are passed on the stack. The called function will pop the arguments off the stack. If the number of arguments is variable all arguments are pushed on the stack.

[링크 : http://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Function-Attributes.html]

콜링 컨벤션(Calling convention)
MS방식은 5가지

__cdecl
__stdcall
__fastcall
thiscall
naked

[링크 : http://codesafe.tistory.com/94]

All arguments are widened to 32 bits when they are passed. Return values are also widened to 32 bits and returned in the EAX register, except for 8-byte structures, which are returned in the EDX:EAX register pair. Larger structures are returned in the EAX register as pointers to hidden return structures. Parameters are pushed onto the stack from right to left.

The compiler generates prolog and epilog code to save and restore the ESI, EDI, EBX, and EBP registers, if they are used in the function.

Note   When a struct, union, or class is returned from a function by value, all definitions of the type need to be the same, else the program may fail at runtime.

For information on how to define your own function prolog and epilog code, see Naked Function Calls.

The following calling conventions are supported by the Visual C/C++ compiler.

Keyword Stack cleanup Parameter passing
__cdecl Caller Pushes parameters on the stack, in reverse order (right to left)
__stdcall Callee Pushes parameters on the stack, in reverse order (right to left)
__fastcall Callee Stored in registers, then pushed on stack
thiscall
(not a keyword)
Callee Pushed on stack; this pointer stored in ECX

[링크 : http://msdn.microsoft.com/en-us/library/984x0h58%28VS.71%29.aspx]

[링크 : http://en.wikipedia.org/wiki/X86_calling_conventions]
Posted by 구차니
Programming/VHDL2009. 12. 17. 17:25
두개 차이가 먼지 모르겠다. ㅋㅋ

The main distinction between FPGA and CPLD device architectures is that FPGAs are internally based on Look-up tables (LUTs) while CPLDs form the logic functions with sea-of-gates (e.g. sum of products).

[링크 : http://en.wikipedia.org/wiki/Complex_programmable_logic_device]


[링크 : http://en.wikipedia.org/wiki/Field-programmable_gate_array]

[링크 : http://en.wikipedia.org/wiki/Verilog]
[링크 : http://en.wikipedia.org/wiki/VHSIC_Hardware_Description_Language]

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

VHDL 문법 공부중 1  (0) 2017.12.10
VHDL 문법 관련  (0) 2017.12.08
VHDL 문법  (0) 2017.12.07
xilinx fpga with vhdl verilog  (0) 2017.12.02
FPGA / CPLD 차이..?  (0) 2017.11.09
Posted by 구차니
Programming/C Win32 MFC2009. 11. 25. 09:56
한번 시간내서 C++을 박살내고 C#을 해봐야 하는건가 ㅠ.ㅠ
아무튼,

class Class_name
{
public:
static const int i;
}

const int Class_name::i = 0;


이렇게 선언하면 클래스를 생성해도 공용으로 사용가능한 변수가 생긴다
(전역변수는 전역변수이되, 클래스 제한 전역변수일려나?)

[링크 : http://ask.nate.com/qna/view.html?n=3253901]

그냥 클래스 내부에서 public static 으로 변수 선언하면 클래스들 끼리 공유한다고 한다.




메소드는 공용으로 사용하는데, 메소드 내부 변수를 static으로 사용하면
클래스들끼리 공용하면 메소드들을 호출 할때 마다 값이 변화하므로, 의도하지 않은 값을 얻을 수 있다고 한다.

[링크 : http://ikpil.com/260]


const 의 의미
[링크 : http://www.cyworld.com/conaon/2965983]
Posted by 구차니
Programming/C Win32 MFC2009. 10. 29. 14:43
당연한 것 일수도 있지만, 조금은 황당했던 사건(!)은

static char array[]; 로 선언한 변수를
포인터로 다른 파일에 있는 함수로 넘겼을 경우, 읽지 못하고 죽어 버린다는 사실이다.

Static global variables are declared as "static" at the top level of a source file. Such variables are not visible outside the source file ("file scope"), unlike variables declared as "extern".

[링크 : http://en.wikipedia.org/wiki/Static_variable]


자세한건 나중에 다시 테스트..
Posted by 구차니
Programming/C Win32 MFC2009. 10. 27. 20:34
솔찍히 아직도 헷갈리는 녀석이 2차원 배열인데.. OTL
2차원 배열은 1차원 배열의 1차원 배열이다(응?)

array[5]는

array[0] array[1] array[2] array[3] array[4]
이고 이걸 2차원 배열로 표기하자면

array[0][0] array[0][1] array[0][2] array[0][3] array[0][4]
가 된다.(에러가 날지 안날지는 모르겠다)


아무튼
2차원 배열
array[3][2]은

array[0][0] array[0][1]
array[1][0] array[1][1]
array[2][0] array[2][1]

의 모양으로 된다.

즉,
array[행][열] 이다.


아래는 배열 주소 검증 프로그램 예제

#include "stdio.h"

int main(void)
{
        int i, j, t;
        int array[2][4], *parray;

        for( i = 0, t = 0; i < 2; i++ )
        {
                for( j = 0; j < 4; j++ )
                {
                        array[i][j] = t++;
                }
        }

        parray = &array[0][0];

        for( i = 0; i < 8; i++ )
                printf("array[%d] = %d\n", i, parray[i]);

        return 0;
}
[링크 : http://kldp.org/node/75640]


2010.09.15 추가


[링크 : http://www.cplusplus.com/doc/tutorial/arrays/]
Posted by 구차니