프로그래밍 언어의 기본적 이해
2011년 9월 14일 고려대학교
정보과학개론 이주용
jlee@formal.korea.ac.kr
두 가지 언어
HelloWorld.java
class HelloWorld {public static void main(String[] args) { System.out.println("Hello World!");
} }
HelloWorld.class
bash-3.2$ opwdopwd
bash: opwd: command not found bash-3.2$ pwdpwd
/Users/jlee/Workspace/Lecture/CNCE150/examples/java bash-3.2$ javac HelloWorld.java javac HelloWorld.java
bash-3.2$ lsls
HelloWorld.class HelloWorld.java bash-3.2$ java HelloWorldjava HelloWorld
Hello World!
bash-3.2$ javap -c HelloWorld.class javap -c HelloWorld.class ERROR:Could not find HelloWorld.class bash-3.2$ javap HelloWorldjavap HelloWorld
Compiled from "HelloWorld.java"
class HelloWorld extends java.lang.Object{
HelloWorld();
public static void main(java.lang.String[]);
}
bash-3.2$ javap -c HelloWorldjavap -c HelloWorld Compiled from "HelloWorld.java"
class HelloWorld extends java.lang.Object{
HelloWorld();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #2; //Field
java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3; //String Hello World!
5: invokevirtual #4; //Method java/io/PrintStream.println:
(Ljava/lang/String;)V 8: return
}
bash-3.2$
Wednesday, September 14, 2011
두 가지 언어
HelloWorld.java
class HelloWorld {public static void main(String[] args) { System.out.println("Hello World!");
} }
HelloWorld.class
public static void main(java.lang.String[]);Code:
0: getstatic #2; //Field
java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3; //String Hello World!
5: invokevirtual #4; //Method java/io/PrintStream.println:
(Ljava/lang/String;)V 8: return
사람의 언어
기계의 언어
두 가지 언어
basic.tex
basic.ps
\documentclass{article}
\begin{document}
some text
\end{document}
9D76BF0B87A8608EB935F17A5123265186F89DC2FCFA144BD9B615A5A1360035 2F0DF9DD44E541EAF89C8F02B2DE8952E2BCB036109171F39E34852CDD8271E9 B3E63DF81A8AEC6E3A71785BFEBEC085C158BB582E971B703201B8497A0AB177 1C6D673226D3E7B23D5CB42A1E8D533BB5433A9C82BAAFC1BA0777867973577F ECC3F197D53C719E4538C658D429E0DD512A5A6BFA0596C8A40522FE2404563A 487C680FAA63C341F154991C15FE14B398791B0ED4DC2D7DE2EAEC5D5BC442FF 5D66FD5DE5514306FEC22D9A3EE879E71D823B381484C131CCEF370C04C40349 F667869427BB7A85D9C8AAFCC2E8E915A562E1CCDAB3A03C56FDCA9D93758464 CA1E1949E8DCABBE10C8B0859E6F440BE98C608E65EF9EA1AF152FD4AE7EA253 8A1AF173D72F3074291783A94D91E664C24A50B1E44B1CCBCD3C88F7279C1531 B96EA2008D538A2AF556D4EB0A57786A2CB5A1BAA8F17925D444CF46314C6D5D 760D91C0F4CDA50E6E0E59AD9674C1D2850CBAC0F0B86AB9BFA68641CFE79A15 E3C11B4204B06F097793D381FEC8FCB2645B48449DA35ED4C6C6B96E
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark
{restore}if
%%EndFont
TeXDict begin 39158280 55380996 1000 600 600 (basic.dvi)
@start /Fa 135[44 3[32 33 3[42 1[69 7[37 51[42 49[{}7 83.022 /CMR10 rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi TeXDict begin
%%BeginPaperSize: a4 /setpagedevice where
{ pop << /PageSize [595 842] >> setpagedevice } { /a4 where { pop a4 } if }
ifelse
%%EndPaperSize end
%%EndSetup
%%Page: 1 1
TeXDict begin 1 0 bop 639 523 a Fa(some)27 b(text)1926 5255 y(1)p eop end
%%Trailer
userdict /end-hook known{end-hook}if
%%EOF
Wednesday, September 14, 2011
두 가지 언어
basic.tex
basic.ps
\documentclass{article}
\begin{document}
some text
\end{document}
%%EndSetup
%%Page: 1 1
TeXDict begin 1 0 bop 639 523 a Fa(some)27 b(text)1926 5255 y(1)p eop end
%%Trailer
userdict /end-hook known{end-hook}if
%%EOF
사람의 언어
프린터의 언어
PS 대 PDF
basic.ps
9D76BF0B87A8608EB935F17A5123265186F89DC2FCFA144BD9B615A5A1360035 2F0DF9DD44E541EAF89C8F02B2DE8952E2BCB036109171F39E34852CDD8271E9 B3E63DF81A8AEC6E3A71785BFEBEC085C158BB582E971B703201B8497A0AB177 1C6D673226D3E7B23D5CB42A1E8D533BB5433A9C82BAAFC1BA0777867973577F ECC3F197D53C719E4538C658D429E0DD512A5A6BFA0596C8A40522FE2404563A 487C680FAA63C341F154991C15FE14B398791B0ED4DC2D7DE2EAEC5D5BC442FF 5D66FD5DE5514306FEC22D9A3EE879E71D823B381484C131CCEF370C04C40349 F667869427BB7A85D9C8AAFCC2E8E915A562E1CCDAB3A03C56FDCA9D93758464 CA1E1949E8DCABBE10C8B0859E6F440BE98C608E65EF9EA1AF152FD4AE7EA253 8A1AF173D72F3074291783A94D91E664C24A50B1E44B1CCBCD3C88F7279C1531 B96EA2008D538A2AF556D4EB0A57786A2CB5A1BAA8F17925D444CF46314C6D5D 760D91C0F4CDA50E6E0E59AD9674C1D2850CBAC0F0B86AB9BFA68641CFE79A15 E3C11B4204B06F097793D381FEC8FCB2645B48449DA35ED4C6C6B96E
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark
{restore}if
%%EndFont
TeXDict begin 39158280 55380996 1000 600 600 (basic.dvi)
@start /Fa 135[44 3[32 33 3[42 1[69 7[37 51[42 49[{}7 83.022 /CMR10 rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi TeXDict begin
%%BeginPaperSize: a4 /setpagedevice where
{ pop << /PageSize [595 842] >> setpagedevice } { /a4 where { pop a4 } if }
ifelse
%%EndPaperSize end
%%EndSetup
%%Page: 1 1
TeXDict begin 1 0 bop 639 523 a Fa(some)27 b(text)1926 5255 y(1)p eop end
%%Trailer
userdict /end-hook known{end-hook}if
%%EOF
basic.pdf
%PDF-1.4%Çì¢5 0 obj
<</Length 6 0 R/Filter /FlateDecode>>
stream
xœMŒ±Â0Dw…Çd¨‰ÝÄIW$„Äʆ˜*èUUø|Ú¬³NïnAGŒ®i÷±ÀáqZÁá¹ÞðÀÝÆ‚Ç\¡„<PêE1¿`+3F
¡^`!ÌîfµlfË“ÔÛ qàdž¶óu‚ƒšw㽶”ICb5Ÿí!ü|S†kÕU`'.endstream endobj
6 0 obj 144
endobj 4 0 obj
<</Type/Page/MediaBox [0 0 595 842]
/Rotate 0/Parent 3 0 R
/Resources<</ProcSet[/PDF /Text]
/ExtGState 10 0 R /Font 11 0 R
>>
/Contents 5 0 R
>>
endobj 3 0 obj
<< /Type /Pages /Kids [ 4 0 R
] /Count 1
>>
endobj 1 0 obj
<</Type /Catalog /Pages 3 0 R /Metadata 13 0 R
>>
endobj 7 0 obj
<</Type/ExtGState /OPM 1>>endobj 10 0 obj
<</R7 7 0 R>>
endobj 11 0 obj
<</R8 8 0 R>>
endobj 8 0 obj
<</BaseFont/CBCRYG+LCMSS8/FontDescriptor 9 0 R/Type/Font
/FirstChar 101/LastChar 120/Widths[ 555 0 0 0 0 0 0 0 972 0 625 0 0 0 479 451 0 0 0 555]
/Encoding/WinAnsiEncoding/Subtype/Type1>>
endobj
Wednesday, September 14, 2011
통역
HelloWorld.java
class HelloWorld {public static void main(String[] args) { System.out.println("Hello World!");
} }
HelloWorld.class
bash-3.2$ opwdopwd
bash: opwd: command not found bash-3.2$ pwdpwd
/Users/jlee/Workspace/Lecture/CNCE150/examples/java bash-3.2$ javac HelloWorld.java javac HelloWorld.java
bash-3.2$ lsls
HelloWorld.class HelloWorld.java bash-3.2$ java HelloWorldjava HelloWorld
Hello World!
bash-3.2$ javap -c HelloWorld.class javap -c HelloWorld.class ERROR:Could not find HelloWorld.class bash-3.2$ javap HelloWorldjavap HelloWorld
Compiled from "HelloWorld.java"
class HelloWorld extends java.lang.Object{
HelloWorld();
public static void main(java.lang.String[]);
}
bash-3.2$ javap -c HelloWorldjavap -c HelloWorld Compiled from "HelloWorld.java"
class HelloWorld extends java.lang.Object{
HelloWorld();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #2; //Field
java/lang/System.out:Ljava/io/PrintStream;
통역 명령 (javac HelloWorld.java)
통역
basic.tex
\documentclass{article}\begin{document}
some text
\end{document}
basic.ps
9D76BF0B87A8608EB935F17A5123265186F89DC2FCFA144BD9B615A5A1360035 2F0DF9DD44E541EAF89C8F02B2DE8952E2BCB036109171F39E34852CDD8271E9 B3E63DF81A8AEC6E3A71785BFEBEC085C158BB582E971B703201B8497A0AB177 1C6D673226D3E7B23D5CB42A1E8D533BB5433A9C82BAAFC1BA0777867973577F ECC3F197D53C719E4538C658D429E0DD512A5A6BFA0596C8A40522FE2404563A 487C680FAA63C341F154991C15FE14B398791B0ED4DC2D7DE2EAEC5D5BC442FF 5D66FD5DE5514306FEC22D9A3EE879E71D823B381484C131CCEF370C04C40349 F667869427BB7A85D9C8AAFCC2E8E915A562E1CCDAB3A03C56FDCA9D93758464 CA1E1949E8DCABBE10C8B0859E6F440BE98C608E65EF9EA1AF152FD4AE7EA253 8A1AF173D72F3074291783A94D91E664C24A50B1E44B1CCBCD3C88F7279C1531 B96EA2008D538A2AF556D4EB0A57786A2CB5A1BAA8F17925D444CF46314C6D5D 760D91C0F4CDA50E6E0E59AD9674C1D2850CBAC0F0B86AB9BFA68641CFE79A15 E3C11B4204B06F097793D381FEC8FCB2645B48449DA35ED4C6C6B96E
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark
{restore}if
%%EndFont
TeXDict begin 39158280 55380996 1000 600 600 (basic.dvi)
@start /Fa 135[44 3[32 33 3[42 1[69 7[37 51[42 49[{}7 83.022 /CMR10 rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi TeXDict begin
%%BeginPaperSize: a4 /setpagedevice where
{ pop << /PageSize [595 842] >> setpagedevice } { /a4 where { pop a4 } if }
ifelse
%%EndPaperSize end
%%EndSetup
%%Page: 1 1
TeXDict begin 1 0 bop 639 523 a Fa(some)27 b(text)1926 5255 y(1)p eop end
%%Trailer
userdict /end-hook known{end-hook}if
%%EOF
통역 명령 (latex basic.tex;dvips basic.dvi)
Wednesday, September 14, 2011
통역
basic.tex
\documentclass{article}\begin{document}
some text
\end{document}
통역 명령 (pdflatex basic.tex)
basic.pdf
%PDF-1.4%Çì¢5 0 obj
<</Length 6 0 R/Filter /FlateDecode>>
stream
xœMŒ±Â0Dw…Çd¨‰ÝÄIW$„Äʆ˜*èUUø|Ú¬³NïnAGŒ®i÷±ÀáqZÁá¹ÞðÀÝÆ‚Ç\¡„<PêE1¿`+3F
¡^`!ÌîfµlfË“ÔÛ qàdž¶óu‚ƒšw㽶”ICb5Ÿí!ü|S†kÕU`'.endstream endobj
6 0 obj 144
endobj 4 0 obj
<</Type/Page/MediaBox [0 0 595 842]
/Rotate 0/Parent 3 0 R
/Resources<</ProcSet[/PDF /Text]
/ExtGState 10 0 R /Font 11 0 R
>>
/Contents 5 0 R
>>
endobj 3 0 obj
<< /Type /Pages /Kids [ 4 0 R
] /Count 1
>>
endobj 1 0 obj
<</Type /Catalog /Pages 3 0 R /Metadata 13 0 R
>>
endobj 7 0 obj
<</Type/ExtGState /OPM 1>>endobj 10 0 obj
<</R7 7 0 R>>
endobj 11 0 obj
Wednesday, September 14, 2011
통역 절차 (수박 겉핥기)
HelloWorld.java
class HelloWorld {public static void main(String[] args) { System.out.println("Hello World!");
} }
HelloWorld.class
bash-3.2$ opwdopwd
bash: opwd: command not found bash-3.2$ pwdpwd
/Users/jlee/Workspace/Lecture/CNCE150/examples/java bash-3.2$ javac HelloWorld.java javac HelloWorld.java
bash-3.2$ lsls
HelloWorld.class HelloWorld.java bash-3.2$ java HelloWorldjava HelloWorld
Hello World!
bash-3.2$ javap -c HelloWorld.class javap -c HelloWorld.class ERROR:Could not find HelloWorld.class bash-3.2$ javap HelloWorldjavap HelloWorld
Compiled from "HelloWorld.java"
class HelloWorld extends java.lang.Object{
HelloWorld();
public static void main(java.lang.String[]);
}
bash-3.2$ javap -c HelloWorldjavap -c HelloWorld Compiled from "HelloWorld.java"
class HelloWorld extends java.lang.Object{
HelloWorld();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #2; //Field
java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3; //String Hello World!
5: invokevirtual #4; //Method java/io/PrintStream.println:
(Ljava/lang/String;)V 8: return
}
bash-3.2$
문법 검사
통과
통역 수행Wednesday, September 14, 2011