Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags more
Archives
Today
Total
관리 메뉴

개발의변화

7. 프로그래밍 언어론 본문

카테고리 없음

7. 프로그래밍 언어론

refindmySapporo 2024. 4. 17. 10:06
반응형

python

list = [1,2,3,4,5,6]

print(list[-2:-4:-1])

 


ASP,JSP,CGI,PHP 서버 측에서 실행

Javascriipt, VBScript 등은 클라이언트 측에서 실행

 


CSS

:link 사용자가 아직 한 번도 이 링크를 통해서 연결된 페이지를 방문하지 않은 상태를 선택함

:visited 사용자가 한 번이라도 이 링크를 통해서 연결된 페이지를 방문한 상태를 선택함

:hover 사용자의 마우스 커서가 링크 위에 올라가 있는 상태를 선택함

:active 사용자가 마우스로 링크를 클릭하고 있는 상태를 선택함

:focus 포커스를 가지고 있는 input 요소를 모두 선택함

 


객체지향 프로그래밍

 

객체, 클래스 재사용

Smalltalk, Simula, java 언어는 객체지향 개념을 잘 표현하고 있다.

추상메소드는 선언만 하고 그 내용은 기술하지 않은 메소드이다. 

오버라이딩, 오버로딩 모두 다형성을 지원하다.

 


C++

다중상속 가능

함수 오버로딩 가능하나 한 클래스 내에서 동일한 이름을 가진 다수의 함수는 정의가능

데이터 캡슐화, 추상화

다형성과 상속

다형성의 지원, 동적 바인딩


고급언어 컴파일 단계

 

소스코드 -> 구문분석 -> 의미분석 -> 어휘분석 -> 코드최적화 -> 코드생성 -> 링크

 

구의어


시스템 S/W

 

컴파일러: 고급언어를 이진목적모듈로 변환기능

링커: 여러 목적모듈을 ㅇ통합하여 실행 가능한 하나의 모듈로 변환기능

로더: 실행 가능한 모듈을 주기억장치에 탑재기능

 

어셈블러: 어셈블리 언어로 기술된 프로그램을 목적 코드로 변환

 


언어의 문법(grammer)을 구성하는 요소

시작기호(start symbol): 생성규칙의 시작기호

생성규칙들(production rules): 문법 규칙들의 집합

비단말기호들(non-terminal symbols)

 


C 프로그램을 컴파일

 

<- 원시프로그램

 

전처리: 소스파일 내부에 있는 전처리 명령

 

<- 헤더 포함, 매크로 확장

 

컴파일: 전처리된 소스파일을 컴파일러를 이용하여 기계어로 번역,

<- 어셈블리코드

 

어셈블: 컴파일을 수행한 후 첫 *.s인 어셈블리어를 어셈블러를 통해 *.o의 기계코드 생성

 

<- 기계코드

 

링크  <- static libraries : 컴파일과정에서 생성된 *obj 파일과 소스코드에서 사용되는 함수들이 들어있는 *lib 파일을 이용하여 실행가능한 파일을 만든다.

 

실행파일


a && b : &&는 논리연산 AND 의미,  ==는 등기여산 같은가를 의미

a & b

a == b

a - b

 


C언어 포인터 변수

 

다른 변수의 주소값 저장

포인터 변수의 크기는 가리키고 있는 변수의 종류에 따라 달라지지않는다. -> 가리키는 변수의 주소를 저장

가리키곡 있는 변수값을 읽기 위해서는 *연산자를 사용

포인터 변수에 일반 변수의 주소를 대입하기 위해서는 &연산자

포인터 변수를 가리키는 포인터 변수를 선언

 


#include <stdio.h>
void main() {

	int x = 0x15213F10 >> 4;
    char y = (char) x;
    unsigned char z = (unsigned char) x;
    printf("%d, %u", y,z)
}

 


#include <stdio.h>
void main() {
 int num[4] = {1,2,3,4};
 int *pt = num;
 pt++;
 *pt++ = 5;
 *pt ++= 10;
 pt--;
 *pt +++= 20;
 printf("%d %d %d %d", num[0],num[1],num[2],num[3]);
}

 

pt++; 주소가 올라감

*pt++; 또한 주소가 올라감

*pt ++= 10 현재 주소 10으로 만들고 pt 값 1증가

*pt +++= 20; // *pt += 20; 수행 후 pt의 값을 1증가

 

 

반응형