파이썬은 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 구차니

댓글을 달아 주세요

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/VHDL VERILOG2009.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 VERILOG' 카테고리의 다른 글

VHDL 문법 관련  (0) 2017.12.08
VHDL 문법  (0) 2017.12.07
EPCS, EPCQ  (0) 2017.12.03
xilinx fpga with vhdl verilog  (0) 2017.12.02
FPGA / CPLD 차이..?  (0) 2017.11.09
CPLD, FPGA  (0) 2009.12.17
Posted by 구차니
TAG CPLD, FPGA

댓글을 달아 주세요

한번 시간내서 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 구차니

댓글을 달아 주세요

  1. 싱글턴 클래스 제작시에 종종 쓰이지용~ 나름 편한점이 있습니다^^
    하지만 남발하면 클래스의 개념이 깨지는 바람에;;;

    2009.11.25 14:19 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 전 C만 다뤄서 언넝 C++도 공부해봐야겠어요 ㅠ.ㅠ
      black_H님의 C++ 강의 기대할께요 ㅋㅋ

      2009.11.25 14:25 신고 [ ADDR : EDIT/ DEL ]
    • 헐퀴 ㅋ 누구한테 강의할 정도로 실력이 출중한게 아니라서요 ㅎㅎ

      2009.11.25 14:43 신고 [ ADDR : EDIT/ DEL ]

당연한 것 일수도 있지만, 조금은 황당했던 사건(!)은

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 구차니

댓글을 달아 주세요

솔찍히 아직도 헷갈리는 녀석이 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 구차니

댓글을 달아 주세요

unix/linux에서는

#include <sys/stat.h>
int mkdir(const char *path, mode_t mode);

으로 디렉토리를 생성하는데

역시.. 윈도우답게, 윈도우에서는 _mkdir()을 지원한다고 한다.
문득 떠오르는 Sleep()과 sleep()의 차이점 ㄱ-

[링크 : http://msdn.microsoft.com/en-us/library/aa363855%28VS.85%29.aspx] CreateDirectory
[링크 : http://msdn.microsoft.com/en-us/library/2fkk4dzw%28VS.80%29.aspx] _mkdir
신고
Posted by 구차니

댓글을 달아 주세요

Programming/Java2009.09.03 22:01
java랑 안친해서 전혀 몰랐는데..
이런 충격적인 사실이 있었다니 -ㅁ-!


대충 검색해보니 unsigned - signed 변환에 예외가 많이 생기니까
차라리 전부 signed로 통일해버리면 깔끔해지기는 할듯 하다라는 이야기가 많이 나온다.

2.1.1 Primitive Data Types

Other than the primitive data types discussed here, everything in the Java programming language is an object. Even the primitive data types can be encapsulated inside library-supplied objects if required. The Java programming language follows C and C++ fairly closely in its set of basic data types, with a couple of minor exceptions. There are only three groups of primitive data types, namely, numeric types, character types, and Boolean types.

Numeric Data Types
Integer numeric types are 8-bit byte, 16-bit short, 32-bit int, and 64-bit long. The 8-bit byte data type in Java has replaced the old C and C++ char data type. Java places a different interpretation on the char data type, as discussed below.

There is no unsigned type specifier for integer data types in Java.

Real numeric types are 32-bit float and 64-bit double. Real numeric types and their arithmetic operations are as defined by the IEEE 754 specification. A floating point literal value, like 23.79, is considered double by default; you must explicitly cast it to float if you wish to assign it to a float variable.

2.1.2 Arithmetic and Relational Operators

All the familiar C and C++ operators apply. The Java programming language has no unsigned data types, so the >>> operator has been added to the language to indicate an unsigned (logical) right shift. Java also uses the + operator for string concatenation; concatenation is covered below in the discussion on strings.
[링크 : http://java.sun.com/docs/white/langenv/Simple.doc1.html]

  • byte: The byte data type is an 8-bit signed two's complement integer. It has a minimum value of -128 and a maximum value of 127 (inclusive). The byte data type can be useful for saving memory in large arrays, where the memory savings actually matters. They can also be used in place of int where their limits help to clarify your code; the fact that a variable's range is limited can serve as a form of documentation.

  • short: The short data type is a 16-bit signed two's complement integer. It has a minimum value of -32,768 and a maximum value of 32,767 (inclusive). As with byte, the same guidelines apply: you can use a short to save memory in large arrays, in situations where the memory savings actually matters.

  • int: The int data type is a 32-bit signed two's complement integer. It has a minimum value of -2,147,483,648 and a maximum value of 2,147,483,647 (inclusive). For integral values, this data type is generally the default choice unless there is a reason (like the above) to choose something else. This data type will most likely be large enough for the numbers your program will use, but if you need a wider range of values, use long instead.

  • long: The long data type is a 64-bit signed two's complement integer. It has a minimum value of -9,223,372,036,854,775,808 and a maximum value of 9,223,372,036,854,775,807 (inclusive). Use this data type when you need a range of values wider than those provided by int.

  • float: The float data type is a single-precision 32-bit IEEE 754 floating point. Its range of values is beyond the scope of this discussion, but is specified in section 4.2.3 of the Java Language Specification. As with the recommendations for byte and short, use a float (instead of double) if you need to save memory in large arrays of floating point numbers. This data type should never be used for precise values, such as currency. For that, you will need to use the java.math.BigDecimal class instead. Numbers and Strings covers BigDecimal and other useful classes provided by the Java platform.

  • double: The double data type is a double-precision 64-bit IEEE 754 floating point. Its range of values is beyond the scope of this discussion, but is specified in section 4.2.3 of the Java Language Specification. For decimal values, this data type is generally the default choice. As mentioned above, this data type should never be used for precise values, such as currency.

  • boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined.

  • char: The char data type is a single 16-bit Unicode character. It has a minimum value of '\u0000' (or 0) and a maximum value of '\uffff' (or 65,535 inclusive).

Data Type Default Value (for fields)
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char '\u0000'
String (or any object)   null
boolean false

[링크 : http://java.sun.com/docs/books/tutorial/java/nutsandbolts/datatypes.html ]


신고

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

Java 에서 파일 목록 엳어오기  (0) 2011.10.29
netbeans 에서 코드 자동정렬  (0) 2011.10.29
Java용 폴더 다이얼로그  (0) 2011.10.28
netbeans IDE  (0) 2010.08.23
unit test - 단위 테스트  (0) 2010.08.18
java에는 unsigned가 없다고?!  (0) 2009.09.03
Posted by 구차니

댓글을 달아 주세요