U E D R , A S I H C RSS

Java Study2003/첫번째과제/장창재

  • ìž�ë°” 언어ì�˜ 특징.
    - �바(Java)를 �야기할 때 �게 � 가지로 나누어 �야기 할 수 있습니다. 먼저, 기계어, 어셈블리어(Assembly), �트란(FORTRAN), 코볼(COBOL), 파스칼(PASCAL), �는 C 등과 같� 프로그래�� 하기 위해 사용하는 �바 언어가 있고, 다른 하나는 �바 언어를 �용하여 프로그래� 하기 위해 사용할 수 있는 �바 API(Application Programming Interface)와 �바 프로그램� 실행시켜 주기 위한 �바 가�머신(Java Virtual Machine) 등� 가리키는 �바 플랫�(Platform)� 있습니다. 다시 �해서, �바 언어는 Visual C++와 비유� 수 있고, �바 플랫�� 윈�우 95/98/NT � 윈�우 95/98/NT API와 비유� 수 있습니다.
    �바 언어(Java Language)를 �용하여 작성한 �바 프로그램(Java Program)� �바 컴파�러(Java Compiler)를 �용하여 �바 바�트코드(Java Byte code)로 컴파� �고, � �바 바�트코드는 �바 가�머신� �해 해��어 실행�는�, �때 �바 가�머신� �바 바�트코드� 대한 해�기 즉 �터프리터(interpreter)로 �작하게 �니다. �렇게 �바 프로그램� 컴파� 방� � �터프리터 방�� 모� �용�다는 것입니다.

  • ìž�ë°” 컴파ì�¼ëŸ¬(Java Compiler):
�바 언어로 작성� �바 프로그램� 중간 언어(intermediate language) 형태� �바 바�트코드로 컴파� 합니다<.
�바 바�트코드(Java Byte code):
컴퓨터는 � CPU� 따� 서로 다른 기계어를 갖습니다. �러한 �유 때문� �스 �는 윈�우 95/98/NT 등� 설치�어 있는 컴퓨터�서 실행�는 프로그램� 유닉스가 설치�어 있는 컴퓨터�서는 실행�지 않는 것입니다. 그러나, �바 바�트코드는 �러한 플랫�� �관없� �바 가�머신� �해 실행� 수 있�� 정�� 중간코드입니다. 따�서, �바 바�트코드로 컴파� �기만 하면, �바 �터프리터� �바 가�머신� 설치�어 있는 곳�면 어디�서든 실행시켜 줄 수 있습니다. �는 �바 개발� �는 사용�로 하여금 �바 프로그램� 개발하거나 사용할 때 그 플랫�� 윈�우 95/98/NT, 유닉스, �는 매킨토시�지 전혀 신경 쓰지 않아� ��� 합니다.
�바 �터프리터(Java Interpreter) �는 �바 가�머신(Java Virtual Machine):
�바 바�트코드 명령어를 해�하고, �를 �바 �터프리터가 설치�어 있는 플랫�(윈�우 95/98/NT, 유닉스, 매킨토시 등)� 맞게 실행시켜 �니다. �바 �터프리터는 �바 바�트코드를 실행시켜 주기 위한 기능� 명세하고 있는 �바 가�머신� 구현해 놓� 것으로서 �바 가�머신과 같� �미로 사용�며, 주로 �바 가�머신으로 많� 사용�니다.
�바 바�트코드는 �바 가�머신�서 실행�는 기계어�고 ��하면 �니다. 그리고, 모든 �바 �터프리터는 �바 가�머신� 구현해 놓� 것으로, �바 가�머신과 �바 �터프리터를 같� 것으로 ��할 수 있습니다. . �러한 �바 가�머신� JDK(Java Development Kit)� �함�어 있� 수� 있고, �바 호환 웹 브�우저 내� 내장�어 있� 수� 있습니다. �는, �바 칩과 같� 하드웨어� �접 구현� 수� 있습니다. �바 바�트코드는 “write once, run anywhere��는 �� 가능하게 해 �니다. 다시 �해서, �바 언어를 �용하여 작성한 �바 프로그램� � 플랫�(윈�우 95/98/NT, 리눅스, 유닉스, 매킨토시 등)� 맞게 제공�는 �바 컴파�러를 통해서 바�트코드로 컴파� 할 수 있습니다. 그리고, � 바�트코드는 �바 가�머신� 있는 어떤 곳�서� 실행� 수 있습니다.
그림 2. 플랫� �립�� �바



플랫��란 프로그램� 실행�는 하드웨어 �는 운�체제와 같� 소프트웨어�� 환경� �합니다. 대부분� 플랫�� 하드웨어와 운�체제를 함께 �컬어 �합니다. 그러나 �바 플랫�� 하드웨어와 무관하게 �작하는 오� 소프트웨어�� 플랫��란 ��서 다른 플랫�과 다릅니다. �를 위해 �바 플랫�� 다�과 같� � 가지� 구성요소를 갖습니다.

�바 가�머신(Java Virtual Machine; Java VM):
�바 가�머신� �바 플랫��기반� �루며, 다양한 하드웨어기반 플랫�� �팅(poring) �니다. 다시 �해서, �바 가�머신� 윈�우 95/98/NT, 유닉스, �는 매킨토시 등과 같� 기존� 운�체제 �는 �터넷 �스플로러와 넷스케�프 등과 같� 웹 브�우저 등, 여러 가지 플랫�� 설치�어 사용� 수 있으며, 사용�는 �바 바�트코드로 컴파�� �바 프로그램� 실행시키기 위해서 � �바 가�머신� �용하면 �니다.
�바 API(Java Application Programming Interface):
�바 API는 윈�우 API와 같� 운�체제�서 제공해 주는 ��브러리와 같� 것입니다. 다시 �해서, �바 프로그램� 개발하기 위해 사용할 수 있는 ��브러리 �는 �래스들�� 할 수 있습니다. �러한 �바 API는 서로 관련� �래스들� 묶어서 패키지 단위로 제공�고 있습니다.

  • ìž�ë°”ì�˜ 장ì � ë°� ì�´ì�µ
�바� 특징� 살펴보면 다�과 같습니다.

간단하다(Simple):
�바� 주� 특징� 기존� C/C++ 언어� 문법� 기본�으로 따르고, C/C++ 언어가 갖는 전처리기, ��터, ��터 연산, 다중 ��, 연산� 중첩(overloading) 등 복잡하고 �해하기 난해한 특성들� 제거함으로� 기존� 프로그램 개발�들� 쉽고 간단하게 프로그램� 개발할 수 있�� 합니다.
�체지향��다(Object-Oriented):
�바는 C++와는 달리 처�부터 �체지향 개�� 기반으로 하여 설계�었고, �체지향 언어가 제공해 주어야 하는 추�화(Abstraction), ��(Inheritance), 그리고 다형성(Polymorphism) 등과 같� 특성들� 모� 완벽하게 제공해 주고 있습니다. �한, �바� �러한 �체지향� 특성� 분산 환경, ���언트/서버 기반 시스템� 갖는 요구사항� 만족시켜 줄 수 있습니다.
높� 신뢰성(Reliability)� 갖는다:
�바는 컴파� 시� �러 검사를 철저하게 하고, 실행 시� 발�할 수 있는 �러� 대해서� 실행 시� 철저하게 검사를 수행함으로� 신뢰�가 높� 프로그램� 작성할 수 있�� 해 �니다. �한, C/C++ 프로그램 개발�들� 가장 혼란스럽게 하고, 프로그램� 치명�� 오류를 발�시킬 수 있는 ��터 � ��터 연산� �바�서는 사용하지 않게 함으로�, ��터를 사용함으로� 프로그래머가 범할 수 있는 오류를 없앴다는 것입니다.
보안성(Security)� 갖는다:
�바는 분산환경�서 작�하�� 설계 �었습니다. 그러나, �바는 �바 언어와 �바 런타임 시스템 내� 보안 기능� 내재�어 있기 때문� 보안성� 있는 프로그램� 개발할 수 있�� 해 �니다. �러한 특성� �바 프로그램� 네트� 환경�서 바�러스 등과 같� 프로그램� 파� 시스템� 파괴하려는 것� 막� 수 있�� 해 �니다.
아키�� 중립�(Architecture-neutral)�고 ��성(Portable)� 높다:
�바는 서로 다른 �종(Heterogeneous)� 네트워� 환경�서 분산 �어 실행� 수 있�� 설계�었습니다. �와 같� 환경�서는 �용 프로그램들� 다양한 하드웨어 아키�� 위�서 실행� 수 있어야만 합니다. �를 위해 �바 컴파�러는 �종� 하드웨어 � 소프트웨어 플랫��서 효율�으로 코드를 전송하기 위해 설계� 아키�� 중립�� 중간 코드� 바�트코드를 �성합니다. �는 ��한 �바 프로그램� �바 바�트코드가 �바 가�머신� 설치�어 있는 어떤 플랫��서� 실행� 수 있�� 하는 것입니다. �한, �바는 기본 언어 정�를 엄격하게 함으로� 효율�� ��성� 제공해 주고 있습니다. 예를 들어, int 형과 같� 기본 ��터형� �기를 플랫�과 무관하게 �정하게 하고, 연산�� 기능� 확실하게 규정하고 있습니다. C 언어를 �용하여 int 형� 선언할 때, �스�서는 16비트, 윈�우 95/98/NT 등 32비트 운� 체제 환경�서는 32비트, 유닉스�서는 32비트 등 그 플랫�� 따� �기가 다르지만, �바�서는 플랫�� �관없� 32비트로 고정��� 하였습니다. �는 �바 프로그램� 실행�는 환경� �바 가�머신으로 ��하기 때문입니다.
높� 수행성능(High-performance)� 제공한다:
�바�서는 �터프-리터가 런타임 환경� 검사할 필요 없� 실행� 수 있�� 구성하였기 때문� 뛰어난 성능� 제공해 �니다. 쓰레기 수집기(garbage collector) 즉 메모리 관리�는 ��으로 낮� 우선순위� 백그�운드 스레드로 실행�어 메모리가 필요할 때�만 �작하�� 함으로�, �바 가�머신�게 무리를 주지 않으면서 보다 나� 수행 성능� 제공할 수 있�� 해 �니다. �한, 방대한 양� 계산� 수행하는 프로그램� 계산� 많� 부분� 본래� 플랫�� 해당하는 기계어 코드로 재작성하여 �바 프로그램과 �터페�스 할 수 있�� 하였습니다.
�터프리터(Interpreter) 방��다:
�바 언어로 작성� �바 프로그램� 중간언어 형태� �바 바�트코드로 컴파�하고, �렇게 �성� �바 바�트코드를 �바 �터프리터가 해�함으로�, �바 �터프리터와 런타임 시스템� ��(porting)� 모든 플랫��서 �바 바�트코드를 �접 실행할 수 있습니다.
다중 스레드(Multi-thread)를 지�한다:
�바� 다중 스레드 기능� �시� 많� 스레드를 실행시킬 수 있는 프로그램� 만들 수 있�� 해 �니다. �바는 �기화 메소드들� 기본�으로 키워드로 제공함으로�, �바 언어 수준�서 다중 스레드를 지�해 �니다. �바 API�는 스레드를 지�해 주기 위한 Thread �래스가 있으며, �바 런타임 시스템�서는 모니터와 조건 잠금 함수를 제공해 �니다.

  • ìž�ë°”ì�˜ 단ì �ê³¼ í•´ê²°ì±…
�바는 몇 가지 단�� 가지고 있는�, �바� 단��� 할 수 있는 문제들과 그� 대해 �바�서는 어떤 기술 �는 방법� �용하여 해결하려 하고 있는 지� 대해 살펴보�� 하겠습니다.

먼저, �바는 기계어 코드를 �접 실행시키는 것� 아니고, 플랫� �립�� 중간 코드 형태� 바�트코드를 �바 가�머신� 해�하여 실행시키는 �터프리터 방�� 취하고 있으므로 �린 수행 시간� 갖습니다. �반�으로 C보다 �균 8배 정� �리고, 최대 20배까지 �립니다. �렇게 �린 수행 시간� 해결하기 위해 다�과 같� 기술� 사용할 수 있습니다.

JIT(Just-In-Time):
네�티브 코드 �성기를 �용하여 �터프리트 하는 �중� 기계어로 ��으로 번역합니다.
HotSpot:
프로그램� 실행하는 중� 그 실행 형태를 분�하여 병목� 발�하는 부분� 찾아내어 최�화 시켜 �니다.
�바-기계어 번역기:
�바 애플리케�션� 대해 바�트코드 대신 기계어 코드를 �접 �성해 �니다.
컴파�시 최�화:
�바 컴파�러를 �용하여 컴파� 할 때 '-O' 옵션� 줌으로� 최�화 시켜�니다.
네�티브 메소드:
C와 ê°™ì�´ 다른 언어로 작성ë�œ 함수를 ì§�ì ‘ 호ìœí•©ë‹ˆë‹¤.
�바 전용 환경:
�바 운�체제 �는 �바 프로세서와 같� �바를 위한 전용환경� 만들어 �니다.
� 번째, �바 애플릿� 웹 서버로부터 웹 ���언트가 다운로드하여 실행시켜 주게 �는�, � 때 네트워� ��가 �리다는 문제가 있습니다. �런 문제�� 대해서는 다�과 같� 기술� 사용하여 해결하려 하고 있습니다.

ì••ì• íŒŒì�¼(JAR ë˜�는 ZIP):
ìž�ë°” 애플릿ì�„ 실행시키기 위해 애플릿ì�„ 다운로드해야 하는ë�°, ì�´ 때 애플릿ì—�서 사용하는 ë�°ì�´í„°ë“¤ë�„ 존재할 수 있습니다. 예를 들어, 애니메ì�´ì…˜ì�„ 수행하는 애플릿ì�´ 있는 HTML 페ì�´ì§€ì—� ì ‘ì†�하여 ê·¸ 애플릿ì�„ 실행시켜야 í•  경우, 해당 애플릿 파ì�¼ê³¼ 애플릿ì—�서 애니메ì�´ì…˜ì�„ 위해 사용하는 ê°� 프레임 ì�´ë¯¸ì§€ë�„ 존재할 것입니다. ë”°ë�¼ì„œ, 애플릿 파ì�¼ì�€ 물론 애플릿ì—�서 사용하는 ì�´ë¯¸ì§€ 파ì�¼ë�„ 다운로드해야 애플릿ì—�서 제대로 애니메ì�´ì…˜ì�„ 수행할 수 있겠지요. ì�´ 때, 애플릿 실행과 관련ë�œ 모든 파ì�¼ì�„ JAR ë˜�는 ZIP 형태ì�˜ ì••ì• íŒŒì�¼ë¡œ 묶어 전송하게 ë�©ë‹ˆë‹¤. ì�´ë ‡ê²Œ 함으로ì�¨, ëŠ�린 네트워í�¬ë¥¼ ì�´ìš©í•˜ì—¬ 애플릿과 관련ë�œ 파ì�¼ë“¤ì�„ 다운로드 하는ë�° 드는 시간ì�„ 줄ì�¼ 수 있습니다.
�싱(Caching):
다운로드 받� 애플릿과 애플릿 관련 파�들� 웹 ���언트� 디스�� �싱합니다. 예를 들어, 웹 ���언트가 애플릿� �함� 페�지를 보다가 다른 페�지� 잠� 들렀다가 애플릿� �함� 페�지로 다시 �아올 경우, 애플릿과 관련� 모든 파�들� 다시 다운로드하는 것� 아니고 웹 ���언트� 디스�� �싱 �어 있는 애플릿 관련 파�들� 사용하게 �니다. �렇게 함으로�, �린 네트워�를 �용하여 애플릿과 관련� 파�들� 다시 다운로드 하는� 걸리는 시간� 없앨 수 있습니다.
�린(lazy) �래스 로딩:
하나� HTML 페�지 내� 있는 애플릿� 하나� �래스만� 사용할 경우� 있겠지만, 대부분� 경우 여러 개� �래스를 필요� 따� 사용하게 �니다. 여러 개� �래스를 사용할 경우, 모든 �래스가 �시� 사용�지는 않겠지요. �한 어떤 �래스는 정�는 �어있지만, 필요� 따� 전혀 사용�지 않� 수� 있겠지요. 따�서, �바�서는 필요할 경우�만 �래스를 로딩하여 사용하게 �니다. �러한 기술� �린(lazy) �래스 로딩 �� 합니다.
세 번째, 모호한 언어� 특성, 비결정� �바 가�머신, 표준화� 실시간 API가 없는 문제 때문� 실시간 �용� 어렵습니다. �를 위해, �바�서는 다�과 같� 기술� 개발하고 �용함으로� 실시간 �용� 가능하게 할 수 있습니다.

모호한 언어 특성� 문제�:
�러한 문제는 �바가 스레드 스케줄� 정책 구현� �존하고, synchronized 명령어가 모니터 기반� �기화 기법만 제공하고 � 대기 시간� 예측할 수 없으며, notify() 메소드가 스레드를 깨우는 순서가 불명확하고, 우선순위 역전(priority inversion_� 가능성� 있습니다. �러한 문제는 API 수준�서 해결�어야 하고, 실시간 타스� 처리를 위한 우선순위 레벨� 확장하고, 우선순위 ��(priority inheritance) �는 우선순위 최고 한� 제한(priority ceiling) 등과 같� 우선순위 역전 방지 (priority inversion avoidance) 프로토콜� 사용하고, MuteX, �진 세마�어(Binary Semaphore), 계수 세마�어(Counting Semaphore) 등� 사용할 수 있습니다.
비결정� �바 가�머신� 문제�:
ì�´ëŸ¬í•œ 문제ì �ì�€ ëŠ�린(Lazy) í�´ëž˜ìФ 로딩ì—�서 ë°œìƒ�하거나 메모리 할당과 가비지 콜렉션ì�´ 비결정ì �ì�´ê³  ëŠ�린 최악ì�˜ 경우(worst-case) 특성ì�„ 가지며 stop-start ë°©ì‹�으로 모든 스레드를 ë©ˆìœ ìˆ˜ 있다는 문제ì �ì�´ 있습니다. ì�´ë¥¼ 해결하기 위해 í�´ëž˜ìŠ¤ë¥¼ 미리 로딩(class preloading)한다거나 ì •ì � 초기화(static initializer)를 제거하여 패키지 ë�¼ì�´ë¸ŒëŸ¬ë¦¬ì—� 대해서는 ê°€ìƒ�머신 초기화를 사용하고 ì�‘용프로그램ì—�서는 명시ì �ì�¸ 초기화 를 사용하게 하는 등ì�˜ 기법ì�„ 사용할 수 있습니다. 그리고, 메모리 할당과 쓰레기 수집(garbage collection)ì—� 대해서는 ì •í•´ì§„ 시간 ë‚´ì—� 입터럽트 가능한 쓰레기 수집ì�„ 하는 것입니다. ë˜�는 표준화ë�œ 실시간 API를 제공함으로ì�¨ í•´ê²°í•  수 있습니다.

* �바 프로그램� 종류
C언어를 �용하여 C 프로그램� 작성한다면 반드시 main��는 시작 함수를 정�해 주어야 하고, 윈�우 �용프로그램� 작성한다고 하면 WinMain��는 함수를 꼭 작성해 주어야 하지요. �러한 것� 규약(protocol)�� 합니다. 마찬가지로, �바 언어를 �용하여 여러 가지 종류� �바 프로그램� 작성할 수 있는�, � 때 � �바 프로그램� 종류� 따� 해당 규약� 서로 다릅니다. �렇듯 �바를 �용하여 �바 프로그램� 작성한다는 것� � �바 프로그램�서 제시하고 있는 규약� 지켜 프로그램� 작성한다는 것입니다. �바 언어를 �용하여 작성할 수 있는 �바 프로그램� 종류를 살펴보면 다�과 같습니다.

�바 애플리케�션(Application):
JDK와 함께 제공�는 �바 가�머신� �해 �립�으로 실행� 수 있�� 작성� �바 프로그램입니다. 다시 �해서, 여러분� 컴퓨터�서 윈�우� �스창 �는 유닉스 쉘 등과 같� 쉘�서 �바 가�머신� �용하여 실행시키는 �바 프로그램입니다. 위� 나오는 그림� �바 애플리케�션� 실행 과정� �세히 보여주고 있습니다.

�바 애플릿(Applet):
<APPLET>~</APPLET> 태그를 �용하여 HTML 페�지 내� �함�어, �바 호환 웹 브�우저� �해서 실행��� 작성� �바 프로그램입니다. 다시 �해서, 여러분� 홈 페�지 내� 삽입�어 �바 호환 웹 브�우저� �해 실행��� 규약� 맞추어 작성� �바 프로그램� �하는 것입니다. 다�� 나오는 그림� �바 애플릿� 실행 과정� �세히 보여주고 있습니다.

�바 서블릿(Servlet):
기존� CGI 프로그램과 같� 웹 서버 프로그램� 기능� 확장하기 위한 �바 프로그램으로서, 웹 서버 내� 있는 �바 런타임 환경과 함께 제공�는 �바 가�머신� �해 실행��� 작성� �바 프로그램입니다. �바 서블릿� 웹 서버 내�서 �바 런타임 환경과 함께 제공�는 �바 가�머신� �해 실행�고, �바 애플릿� 웹 서버�서 웹 ���언트로 다운로드 �어 웹 ���언트�서 �바 호환 웹 브�우저� 내장� �바 가�머신� �해 실행�다는 차��� 있습니다. �렇게 웹 서버 내�서 실행� 수 있�� 작성� �바 서블릿� 기존� 웹 서버 내�서 실행�는 프로그램� CGI 프로그램� 대체할 수 있�� 고안�었습니다. 다�� 나오는 그림� �바 서블릿� 실행 과정� �세히 보여주고 있습니다.


�바 빈(Bean):
�파� �는 비주얼 베��� �용하여 프로그램� 작성할 때, 버튼�나 창과 같� 컨트롤들� 마우스로 �어다 프로그램 내� 삽입할 수 있�� �어 있는�, �와 마찬가지로 �바 빈� 하나� 완벽한 기능� 갖고 재사용� 수 있�� 만들어진 소프트웨어 컴�넌트입니다. 마��로소프트�서 제공�는 ActiveX 컴�넌트와 같� �바�서 컴�넌트 프로그램� 가능하�� 해 �니다.

�바 패키지(package):
다른 ìž�ë°” 프로그램ì—� ì�˜í•´ 삽입(import)ë�˜ì–´ 사용ë�  수 있ë�„ë¡� 작성ë�œ ìž�ë°” 프로그램입니다. ì�´ëŸ¬í•œ ìž�ë°” 패키지는 기존ì�˜ 프로그래ë°� 언어ì—�서 사용하ë�˜ ë�¼ì�´ë¸ŒëŸ¬ë¦¬ ë˜�는 ìš´ì˜�ì²´ì œì—�서 제공해 주는 API 등과 같다고 ë³¼ 수 있습니다. ìž�ë°” 패키지 역시 해당 규약ì�„ 갖겠지요. ìž�ë°”ì—�서는 기본ì �으로 ì••ì• íŒŒì�¼ì�˜ 형태로 'casses.zip"ì�´ë�¼ëŠ” ìž�ë°” 패키지가 제공ë�˜ê³  있고, ì••ì• íŒŒì�¼ ë‚´ì—�는 디렉토리 단위로 패키지가 í�¬í•¨ë�˜ì–´ 있습니다. 다ì�Œì—� 나오는 그림ì�€ JDK 1.2.2 ì—�서 제공ë�˜ëŠ” 패키지를 보여주고 있습니다.



따�서, 여러분� 하나� �바 프로그램� 작성할 때, 위� 나열� 하나� 규약� 맞게 �바 프로그램� 작성할 수� 있지만, 하나� �바 프로그램� 위� 규약들� � 개 �� 만족하�� 작성할 수� 있습니다.

�렇게 � 개 ��� �바 프로그램 규약� 만족시키는 �바 프로그램� 여러 �바 프로그램� �하게 �니다. 예를 들어, 하나� �바 프로그램� 작성했는�, � �바 프로그램� �바 애플리케�션� 위한 규약� 만족시켜 주고 �바 애플릿� 위한 규약� 만족시켜 준다면, � �바 프로그램� JDK와 함께 제공�는 �바 가�머신� �해 실행�는 �바 애플리케�션으로서 �립�으로 실행� 수� 있고, �바 호환 웹 브�우저� 내장� �바 가�머신� �해 �바 애플릿으로 실행� 수� 있다는 것입니다. �렇게 �바 언어를 �용하여 여러 규약� 맞는 �바 프로그램� 작성할 수 있지만, 하나� �바 프로그램� 굳� � 개 ��� 규약� 모� 만족시켜주�� �바 프로그램� 작성하는 경우는 �바 애플리케�션과 �바 애플릿� 경우를 제외하고는 거� 없습니다.

~cpp 
class HelloWorldApp { 
public static void main(String args[]) {

System.out.println("Hello World!"); // Display the string

}

}
 

� 대충 하긴 했는�, �바� 대한 개�부터 확실한 설명� 듣고 시작해야 스터디가 성공할수 있�것 같습니다.

�바를 아는 사람� 강� 한시간�, �학 10시간보다 효율��며, 기초를 제대로 잡아야 건물� 높게 지�수 있습니다.

너무 욕심내서 어려운것만 하려고 하지 �고, 차근차근 스터디를 진행하면서 방학�날때까지 '�바란 무엇�가?' �대한

개�만 알아� 성공한것�� ��합니다.

물론 스터디하는 사람들� �학� 중요 하겠죠.

한마디로.....좀 쉬운것부터 천천히 배워 나갔으면 하네요.

추가 내용


  • 첫번째 과제ì—�서 제가 ì�˜ë�„í–ˆë�˜ 바가 바로 "ìž�바를 왜 사용하는 것ì�¸ê°€?" ê°€ 바로 ì´ˆì �ì�´ì—ˆëŠ”ë�° 아쉽게ë�„ 카피 & 페ì�´ìŠ¤íŠ¸ ë§Œ 해서 과제를 ë��마치신거 같군요. ë°‘ì�˜ 질문ì�€ 위ì�˜ ë‚´ìš©ì�„ 단 10%ë�„ ì�´í•´ë¥¼ 못했다는 ëŠ�낌ì�´ 드네요. ìž�ì‹ ì�´ 한 과제를 차근차근 다시 ì�½ì–´ë³´ì‹œë©´ì„œ "ìž�바는 무엇ì�´ë©° 왜 사용하는가?" ì—� 대한 해답ì�„ 얻으시기 ë°”ëž�니다.
  • 다른 사람ì�´ 한 과제ë�„ 꼼꼼히 ì�½ì–´ë³´ì‹œê¸° ë°”ëž�니다. 조금ì�˜ ì°¨ì�´ì �ì�´ ëŠ�껴지실거구요(물론 한분ì�´ëž‘ ë‚´ìš©ì�´ 같네요;;) 그걸 다시 ì�´í•´í•˜ì‹œê¸° ë°”ëž�니다.
  • 역시나 프로그램ì�„ 못하셨군요. 프로그램 역시 실행시켜 보시기 ë°”ëž�니다.


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:33
Processing time 0.0132 sec