Programming/언어론2010. 9. 15. 11:38
일반적으로 많이 접하는 '컴파일'언어들은 '형(type)'이 존재한다.
이러한 형의 존재를 type system 이라고 하고, 동적 형변환과 정적 형변환 그리고 강한 형검사, 약한 형검사로 나윈다.

음.. 결론은 없는 문제이지만,
강형(강한 형검사)/약형(약한 형검사)는 상대적인 것이라 나누는 것이 딱히 의미는 없어 보이고,
중요한건 동적 형 변환/정적 형 변환이냐의 차이가 아닐까 생각이 된다.

강한 형검사(strong typing)
 In computer science and computer programming, a type system is said to feature strong typing when it specifies one or more restrictions on how operations involving values of different data types can be intermixed. The opposite of strong typing is weak typing.

약한 형검사(weak typing)
 In computer science, weak typing (a.k.a. loose typing) is a property attributed to the type systems of some programming languages. It is the opposite of strong typing, and consequently the term weak typing has as many different meanings as strong typing does.

동적 형 변환(dynamic typing)
 A programming language is said to be dynamically typed when the majority of its type checking is performed at run-time as opposed to at compile-time. In dynamic typing, values have types but variables do not; that is, a variable can refer to a value of any type. Dynamically typed languages include Erlang, Groovy, JavaScript, Lisp, Lua, Objective-C, Perl (with respect to user-defined types but not built-in types), PHP, Prolog, Python, Ruby, Smalltalk and Tcl.

정적 형 변환(static typing)
 A programming language is said to use static typing when type checking is performed during compile-time as opposed to run-time. Statically typed languages include Ada, AS3, C, C++, C#, Eiffel, F#, Go, JADE, Java, Fortran, Haskell, ML, Objective-C, Pascal, Perl (with respect to distinguishing scalars, arrays, hashes and subroutines) and Scala. Static typing is a limited form of program verification (see type safety): accordingly, it allows many type errors to be caught early in the development cycle.

[링크 : http://kldp.org/node/55577]
[링크 : http://en.wikipedia.org/wiki/Statically_typed]
    [링크 : http://en.wikipedia.org/wiki/Statically_typed#Dynamic_typing]
    [링크 : http://en.wikipedia.org/wiki/Statically_typed#Static_typing]
[링크 : http://en.wikipedia.org/wiki/Weak_typing]
[링크 : http://en.wikipedia.org/wiki/Strong_typing]


언어별로 대충 훑어 보자면,
정적 형 변환 언어는 C 처럼 변수형을 지정하고 사용하는 언어이고
동적 형 변환 언어는 python이나 스크립트 처럼 변수형이 없이 변수명에 임의의 값을 넣고 사용하는 언어로 보인다.

'Programming > 언어론' 카테고리의 다른 글

dangling if-else  (0) 2014.08.13
double의 정확도 자릿수  (0) 2011.03.25
함수 포인터 (function pointer)  (0) 2010.09.16
calling convention(콜링 컨벤션)  (0) 2010.04.17
Posted by 구차니
Programming/C++ STL2010. 9. 15. 10:19
C99 이런것들 처럼 C++에 대한 표준안이지만 현재로서는 비공식 표준이다.
친구로는
C++98 (1998년 제정 표준)
C++03 (2003년 제정 표준)이 있다.
[링크 : http://en.wikipedia.org/wiki/C%2B%2B98#Language_standard]

[링크 : http://ko.wikipedia.org/wiki/C%2B%2B0x]
[링크 : http://en.wikipedia.org/wiki/C%2B%2B0x]

'Programming > C++ STL' 카테고리의 다른 글

cout 그리고 namespace  (0) 2010.09.16
C++ 레퍼런스 변수(reference variable)  (4) 2010.09.15
std::vector 포인터  (0) 2010.09.13
스마트 포인터(smart pointer)  (2) 2010.09.09
C++ 강좌/문법/reference  (4) 2010.09.09
Posted by 구차니
개소리 왈왈2010. 9. 15. 09:10
연이은 고양이 투척사건으로 인터넷이 시끌벅적하다.
이번 사건은
분당
고양이 주인 아저씨로 추측 (깜상애비 < 아이디)
고양이 주인은 복도에서 담배피러 나왔다가 문 닫지 않는 바람에 고양이 가출(혹은 산책)
던진사람은 이웃인 아줌마로 추측
고양이가 아줌마가 기르는 식물을 해코지 (개풀도 아니고 고양이 풀 뜯는소리 + 비싼 식물일지도?)
광포화된 아줌마 고양이 투척(잡으러 오니 놀라서 피하려고 뛰었는데 13층이었을지도?)
확인사살겸 내려와서 머리에 돈을 얹은것으로 추측(혹은 고인돌을 본 받아 돌로 묻어준 것일지도?)

리플은 애완동물은 반려동물로 가족과도 같다( = 사람과 동격 취급) 라는 입장과
애완동물 기른다고 하면서 중성화(고자라니!), 성대수술(말도 못하는 데다가 좆병신!) 시키는게 더 잔인하다
혹은 그래도 인권이 우선이지, 묘/견권이 우선이냐? 라는 입장
그에 반대하는 개만도 못한 인간도 인권취급을 해야 하냐 라는 반론
이렇게 주로 4가지로 갈린다.

문득 생명체를 죽였다는 사실보다는 '생명체'를 어떻게 정의하냐가 궁금해진다.
▶ 식물은 활동성이 매우 느리기 때문에 살아있다라는 생각이 안들어서
활동성이 높은 동물에 비해 생명존중 사상이 떨어지는 걸까?
▶  혹은, 널린게 식물이라 잡초도 그렇고 강인해서
잘못 맞으면 골로가는 유기 생명체/동물과는 다르게 대충 해도 된다는 인식인걸까?
▶ 살해과정의 분업화를 통한 생명에 대한 무게감이 가벼워진 것도 원인일까?
말은 거창하지만, 우리의 육류문화가 바로 살해의 분업화이다. 돼지나 소가 공장 라인을 타고 흐르면서
최초의 한사람 역시 기계의 힘을 빌어 숨을 끊고, 역시 기계의 힘을 빌어 다른 사람이 피를 빼내고,
라인을 타고 기계의 힘을 빌어 다른 사람에 의해 토막이 나고, 또 다른 사람에 의해 더 세분화 되어 잘리고
또 다른 사람에 의해 포장이 되고, 또 다른 사람에 의해 배송이 되고, 마트나 정육점에 올려진 후
(대개는) 엄마에 의해 요리라는 이름으로 살해과정이 마쳐지고, 식사라는 이름으로 식육을 하게 된다.
어쩌면 지극히 당연한 과정이지만, 이러한 과정들을 거치면서 우리는 어쩌면 살해에 익숙한 삶을 살게 된건 아닐까?
머.. 그렇다고 해서 지독한(!) 채식주의자는 아니지만,
똑같은 생명이거늘 하나는 "식용"이라는 이름하에 죽는게 당연하고,
다른 하나는 "애완용/반려" 라는 딱지로 죽어서는 안되고 인간과 동급 취급을 받는다는게 참 웃기기 까지 하다.

아무튼 개인적으로는
생명경시도 극에 달했으니 아줌마도 생명을 그렇게 죽인것에 대한 처벌을 받고
(일부에서는 재산손해니까 고양이 값만 물어주면 된다는 이야기도 있지만)
고양이 주인도 탈출방조에 대한 책임을 지고 + 복도에서 누가 담배피래!!!! 로 처벌을 양쪽다 했으면 하는 바램이다.

경중이야 판사가 알아서 할일이지만,
머랄까.. 요즘에는 사람이 개나 고양이 만도 못해진 느낌..
다음생에는 개로 태어날까?

[링크 : http://media.daum.net/society/affair/view.html?cateid=1010&newsid=20100914152010428&p=ned]


사족
지구 온난화를 이야기 하는(이제는 거의 사실로 드러나고 있다고 거의 대부분의 대중이 믿기에) 과학자 권력과
애완동물의 펫권(!)을 이야기 하는 애완동물 옹호론자(모피반대 세력, 실험실 쥐 반대세력 등등등)의 권력
그리고 생명은 소중한거라면서 채식만 하는 채식주의자의 권력 세가지가 싸워대면 누가 이길까?

사족 2
그럼에도 불구하고 나는 인간이기 때문에 고양이나 개 보다는 사람의 편을 들고 싶다.
Posted by 구차니
Linux/Ubuntu2010. 9. 14. 22:47
커널 컴파일을 하려는데 이런 에러가 발생한다.
솔찍히 건드린건 하나도 없고, 그냥 yaffs2만 추가했는데 ㅠ.ㅠ

ld: /ubuntu/omnibook/sections.lds: No such file: No such file or directory

[링크 : https://bugs.launchpad.net/ubuntu/+source/linux/+bug/505420]

이넘이. HP 노트북 omnibook용 추가 모듈(?)로 인해 발생하는 에러인것 같지만..
잘은 모르겠는데 흐아.. 리눅스 머신이 싱글코어 1.8기가 인가 그런데 언제 또 다시 컴파일 돌리나 ㅠ.ㅠ
[링크 : http://sourceforge.net/projects/omke/]



make menuconfig 에서 / 로 omnibook을 검색하니
아래와 같이 나온다. 이녀석이 기본으로 켜져있어서 omnibook 오류가 난듯 하다.

최상위에서 부터                      Ubuntu Supplied Third-Party Device Drivers
그리고 그 메뉴의 가장 아래에        Kernel module for HP and Toshiba laptops

Posted by 구차니
아이콘 정도는 좀 유지해달라구 ㅠ.ㅠ
아니.. 그걸 떠나서 한글과 영어의 차이일려나?

한글버전 Visual Studio가 어색한 1인! ㅠ.ㅠ


VS2010 / VS6
Posted by 구차니
VC6.0 에서 VC10.0 으로 점프하니 이거 UI들이 어디로 짱박혔는지 도무지 알수가 없다 -_-
지들이 무슨 말년병장도 아니고 우씨!

암튼, Dialog Editor를 띄우고 우측의 "도구 상자"에 마우스를 가져다 대면 각종 컨트롤의 목록이 나타난다.


Posted by 구차니
Programming/C++ STL2010. 9. 13. 14:02
VC6.0 프로젝트를 VS2010으로 이전하다가, 코드는 아래와 같은데
std::vector<vectoriter>::iterator iter;
            vectoriter *pch = iter;

이런 에러가 발생이 되었다.
 error C2440: '초기화 중' : 'std::_Vector_iterator<_Myvec>'에서 'vectoriter *'(으)로 변환할 수 없습니다.

STL의 vector를 사용하는데, 어짜피 이녀석도 array로 호출은 되지만,
포인터 레벨의 차이인지 에러를 출력한다.
The usual way is &v[0]. (&*v.begin() would probably work too, but I seem to recall there's some fluffy wording in the standard that makes this not 100% reliable)

[링크 : http://stackoverflow.com/questions/1388597/stdvector-and-c-style-arrays]

 vectoriter *pch = &iter[0]; // no error
 vectoriter *pch = &iter; // error
흐음.. vector.begin() 역시 [0]과 같은 의미인것 같으나.. 여전히 템플릿은 머가먼지... OTL

'Programming > C++ STL' 카테고리의 다른 글

C++ 레퍼런스 변수(reference variable)  (4) 2010.09.15
C++0x  (0) 2010.09.15
스마트 포인터(smart pointer)  (2) 2010.09.09
C++ 강좌/문법/reference  (4) 2010.09.09
STL 그리고 Template  (0) 2010.09.09
Posted by 구차니
WTL 은 현재(2010.09.13) 8.1 버전까지 소스포지에 올려져 있으나,
릴리즈 상으로는 VisualStudio 2008 까지만 지원한다. (VS2008이 VC9.0 이려나?
[링크 : http://sourceforge.net/projects/wtl/]

아무튼 2010에 설치를 하려면 소스트리에서 직접 받아야 하는데
[링크 : http://wtl.svn.sourceforge.net/viewvc/wtl/trunk/wtl/Wizards/?view=tar]
위의 링크에서 AppWiz만 받거나, 직접 setup100.js 를 트리에서 받아도 상관은 없다.

Step 1. WTL\AppWiz 에서 버전에 맞는 스크립트를 골라 더블클릭으로 실행
           x로 끝나는 js 파일은 express 버전용이다. (2005/2008/2010 express 버전용 파일)


Step 2. Win7의 경우 사용자 계정 컨트롤이 뜨고 설치가 된다.

Step 3. 설치가 되고 나서 비쥬얼 스튜디오를 다시 실행하면 ATL/WTL이 추가되어있다.


하지만, 컴파일이 안되서... OTL
C:\WTL81_9127\Include 의 헤더들을
C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include 로 복사해주었다.
Posted by 구차니
프로젝트 컴파일을 하려는데
 stdafx.h(22): fatal error C1083: 포함 파일을 열 수 없습니다. 'atlapp.h': No such file or directory
위와 같은 에러가 발생하면, ATL이 아닌 WTL을 설치해주어야 한다.

하지만, Visual Studio 2005 까지는 WTL8.0이 지원 하지만,
아직 Visual Studio 2010(VS 10.0 버전인가..)을 정식 지원하는 WTL은 존재하지 않는다.

아래와 같은 방법으로 수동설치를 하면 된다는데.. VS2010에서 되려나?
To manually install AppWizard for VC++ .NET 2002/2003, copy all WTLAppWiz.* files from AppWiz\Files to VC++ .NET projects directory, %VC7DIR%\Vc7\vcprojects, where %VC7DIR% is the directory where VC++ .NET 2002/2003 is installed. After that, open WTLAppWiz.vsz and modify the like that contains ABSOLUTE_PATH to contain %WTLDIR%\AppWiz\Files, where %WTLDIR% is the directory where WTL files are.

머.. 정 안되면 작업중인 WTL8.1을 다운로드 받아서 해보는 수 밖에 -ㅁ-?
[링크 : http://wtl.svn.sourceforge.net/viewvc/wtl/trunk/wtl/Wizards/AppWiz.tar.gz?view=tar]
    [링크 : http://stackoverflow.com/questions/2260351/how-can-i-install-wtl-8-0-project-wizards-in-vs-2010]

아래는 WTL 설치파일 중 readme.html 파일의 내용중 WTL8.0 파일 목록이다.

Packing List

 

File Name: Description:

readme.htm this file
Ms-PL.txt license
 
include\
    atlapp.h message loop, interfaces, general app stuff
    atlcrack.h message cracker macros
    atlctrls.h standard and common control classes
    atlctrlw.h command bar class
    atlctrlx.h bitmap button, check list view, and other controls
    atlddx.h data exchange for dialogs and windows
    atldlgs.h common dialog classes, property sheet and page classes
    atlfind.h Find/Replace support for Edit and RichEdit
    atlframe.h frame window classes, MDI, update UI classes
    atlgdi.h DC classes, GDI object classes
    atlmisc.h WTL ports of CPoint, CRect, CSize, CString, etc.
    atlprint.h printing and print preview
    atlres.h standard resource IDs
    atlresce.h standard resource IDs for Windows CE
    atlscrl.h scrollable windows
    atlsplit.h splitter windows
    atltheme.h Windows XP theme classes
    atluser.h menu class, USER object classes
    atlwince.h specific support for Windows CE Mobile platforms
    atlwinx.h extensions of ATL windowing support
 
Samples\
    Aero\... Vista Aero glass showcase
    Alpha\... Windows XP 32-bit (alpha) toolbar images
    BmpView\... bitmap file view sample
    GuidGen\... WTL version of the GuidGen sample
    ImageView\... Full-featured PPC frame-view application
    MDIDocVw\... WTL version of the MDI sample
    MiniPie\... port of the SDK sample for Mobile devices
    MTPad\... multithreaded notepad sample
    SPControls\... Barebone SmartPhone dialog application
    TabBrowser\... Web browser using TabView
    Wizard97Test\... Wizard97 showcase sample
    WTLExplorer\... Explorer-like application sample
 
AppWiz\
    setup70.js AppWizard setup program for VC++ .NET 2002
    setup71.js AppWizard setup program for VC++ .NET 2003
    setup80.js AppWizard setup program for VC++ 2005
    setup80x.js AppWizard setup program for VC++ 2005 Express
    Files\... WTL AppWizard for VC++ .NET 2002 and 2003 files
 
AppWizCE\
    setup80.js AppWizard setup program for VC++ 2005
    Files\... WTL AppWizard for VC++ 2005 files
 
AppWizMobile\
    setup80.js AppWizard Mobile setup program for VC++ 2005
    Files\... WTL AppWizard Mobile for VC++ 2005 files

[링크 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=503474&ref=503474]
[링크 : http://winapi.co.kr/project/library/wtl/1-1.htm]
[링크 : http://www.microsoft.com/downloads/...E5BA5BA4-6E6B-462A-B24C-61115E846F0C] WTL 8.0
Posted by 구차니
구 버전의 비쥬얼 스튜디오에서 생성한 프로젝트의 경우
해당 버전의 stdafx.h 를 생성하면서 _WIN32_WINNT 의 선언을 끌어 오게 되는데
그로인해 새로운 버전과 충돌이 나면서 컴파일이 되지 않는 문제가 발생된다.

프로젝트를 컴파일 하면, atlcore.h 파일에서 이 부분이 오류가 난다고 지적을 해주고

그 선언을 추적해보면, sdkddkver.h 에 0x0601로 선언이 되어있다.

하지만, 프로젝트 내의 stdafx.h 에서는 0x0400 으로 선언이 되어 있기 때문에
위의 조건식에서(#if _WIN32_WINNT < 0x0403) 에러가 발생이 되게 된다.

그러므로 이 값을 임의로 수정해주면 되는데, sdkddkver.h 의 값을 끌어오면 되지 않을까 생각이 된다.

[링크 : http://vsts2010.net/411]
Posted by 구차니