독하게 시작하는 JAVA part1-섹션 03

2024. 12. 12. 14:53언어들/자바

728x90
반응형

고급어와 저급어

  • CPU가 인식 할 수 있는 명령어는 기계어
    • CPU 접점에 전기 신호를 넣으면 1, 그렇지 않으면 0
    • 2진수로 표기 가능 - 보통 16진수로 변환해 표기
  • 장치에 의존적인 기계어를 사람이 이해하기 용이한 문자열 표기로 정의한 것이 고급어
    • C, C++, Java

디지털 회로

참조 사이트 : pixabay

https://www.homebrewcpu.com/

 

Homebrew CPU Home Page

Magic-1 is a completely homebuilt minicomputer.  It doesn't use an off-the-shelf microprocessor, but instead has a custom CPU made out of 74 Series TTL chips.  Altogether there are more than 200 chips in Magic-1 connected together with thousands of indiv

www.homebrewcpu.com

  • 머신 코드는 전기 신호의 조합 -0, 1
  • 2진수로 표기하기 보다는 16진수로 변환해 표기
  • 0x는 16진수를 의미
  • 보통 디스어셈블 코드로 표기

https://coding-factory.tistory.com/649

JVM

  • CPU를 소프트웨어로 구현하였고 특별히 JAVA Byte Code를 해석하는 가상머신이여서 JVM임.
  • Java Byte Code를 JVM 기계어라고 함
  • JVM은 이 Java Byte Code를 실제 물리적 CPU 기계어로 번역을 해서 전달
  • C, C++에 비해 한 단계를 거치기 때문에 성능이 떨어질 수 밖에 없음.
  • JVM의 한계는 언어의 한계가 됨.
  • 큰 장점은 OS 플랫폼에 고민할 필요가 없음(의존적이지 않음)

JDK 구성 요소와 기능

출처 사이트

 

JDK, JRE, JVM 간략 정리

자바 개발 키트로, Java 프로그램을 개발하기 위해 필요한 도구 모음이다.자바 소스 코드를 컴파일 하고 디버깅 할 수 있는 도구를 제공한다.JDK에는 JRE, javac 등의 컴파일러, 디버깅 도구, JVM 등이

velog.io


오류를 버그라 부르게 된 사연

"버그"라는 용어는 컴퓨터 오류를 설명하는 데 사용되기 오래 전부터 공학 분야에서 사용되었습니다. 1947년 9월 9일, 하버드 마크 II 컴퓨터에서 실제 나방이 발견되어 "첫 번째 실제 버그 발견"이라는 기록이 남겨졌습니다. 이 사건은 그레이스 호퍼에 의해 유명해졌지만, "버그"라는 용어는 이미 공학 분야에서 사용되고 있었습니다

  • 1946년 Mark II의 계산오류의 원인을 규명
  • 릴레이(#70, Panel F)에 끼어든 나방 때문에 발생한 것으로 확인 후 이를 기록
  • 에디슨이 말한 버그의 First actual case

"버그"라는 단어는 19세기부터 전자 및 기계적 결함을 설명하는 데 사용되었습니다. 예를 들어, 토머스 에디슨은 1878년에 자신의 기술 문제를 설명할 때 "버그"라는 단어를 사용했습니다

 

이 용어는 중세 영어의 "bugge"에서 유래했으며, 이는 괴물이나 악령을 의미했습니다따라서 "버그"라는 용어는 원래 결함이나 문제를 설명하는 데 사용되었고, 이후 소프트웨어 오류에도 적용되었습니다.

 

 

 

 

https://www.globalapptesting.com/blog/the-worlds-first-computer-bug-global-app-testing

https://lunduke.substack.com/p/the-story-of-the-first-computer-bug

https://www.computerhistory.org/tdih/september/9/

 

COBOL 코드 예

Let's start the coding how to display 'HELLO WORLD' in COBOL,

IDENTIFICATION DIVISION.
PROGRAM-ID. IDSAMPLE.
ENVIRONMENT DIVISION.
PROCEDURE DIVISION.
    DISPLAY 'HELLO WORLD'.
    STOP RUN.

https://www.ibmmainframer.com/cobol-tutorial/cobol-hello-world/

  1. IDENTIFICATION DIVISION.
    • 이 구문은 필수적입니다.
  2. PROGRAM-ID. IDSAMPLE.
    • 프로그램 ID 이름인 IDSAMPLE을 IDENTIFICATION DIVISION에서 선언해야 합니다. 이는 필수입니다. 보통 이 이름은 PDS 멤버 이름(파일 이름)과 동일하게 설정됩니다.
  3. ENVIRONMENT DIVISION.
    • 이 구문은 선택적입니다.
  4. PROCEDURE DIVISION.
    • 이 구문은 필수적입니다.
  5. DISPLAY 'HELLO WORLD'.
    • DISPLAY 문장은 데이터를 출력 장치(예: 화면)로 전송하는 데 사용됩니다. 출력 장치는 배치 프로그램인 경우 JCL의 SYSOUT 설정에 따라 결정될 수 있습니다. 여기서는 하드코딩된 값인 'HELLO WORLD'를 출력하기 위해 DISPLAY 문장이 사용되었습니다.
  6. STOP RUN.
    • 프로그램의 끝을 나타냅니다. 프로그램 마지막에 반드시 추가해야 하는 필수 구문입니다. 이는 실행 가능한 마지막 문장으로, OS로 제어를 반환합니다. STOP RUN은 항상 메인 프로그램에서 작성되며, 서브 프로그램에서 작성될 경우 제어가 메인 프로그램이 아닌 OS로 반환됩니다.

원문

Explanation:

  • Line 1 : IDENTIFICATION DIVISION. - this division is mandatory.

  • Line 2 : PROGRAM-ID. IDSAMPLE. - it is mandatory to declare the program id name-IDSAMPLE in indentification division. usually this name is same as PDS member name(file name).

  • Line 3 : ENVIRONMENT DIVISION. - this division is optional.

  • Line 4 : PROCEDURE DIVISION. - this division is mandatory.

  • Line 5 : DISPLAY 'HELLO WORLD'. - DISPLAY statement used to transfer the data to the output device/screen. Output device can be decided based on the SYSOUT in JCL if it is a batch program. Here display statement is used to diplay hardcoded value 'HELLO WORLD'.

  • Line 6 : STOP RUN. - End of program. It is mandatoy to add at the end of program. This is the last executable statement in the program which will returns the control back to OS. STOP RUN always coded in the main program. If STOP RUN coded in the sub program, the control will return to OS instead of returning to main program.

항, 식, 구문

  • 여러 항이 모여 식을 이룸
  • 식은 평가 대상 - 식을 평가하기 위해서는 계산(연산)을 해야 함
  • 여러 식을 모아 하나의 구문을 이루며 고급어 기준 실행단위가 됨
  • 연속되는 구문을 위해서 아래로 순차적 실

항 (Term)

  • 은 수식이나 논리식에서 하나의 구성 요소를 의미합니다.
  • 예를 들어, 수학식 3x+2에서 3x 는 각각 항입니다.

식 (Expression)

  • 은 값으로 평가될 수 있는 코드 조각입니다.
  • 예를 들어, a+b, 5×10같은 것이 식입니다.
  • 식은 하나 이상의 항으로 구성될 수 있습니다.

구문 (Statement)

  • 구문은 프로그램에서 실행 가능한 명령어입니다.
  • 예를 들어, int x = 5;는 변수 x에 5를 할당하는 구문입니다.
  • 구문은 보통 세미콜론(;)으로 끝납니다.

컴파일러와 인터프리터

특징 컴파일러 인터프리터
번역 방식 전체 프로그램을 스캔하여 한 번에 기계어로 번역합니다. 각각의 명령어를 한 번에 한 개씩 번역하고 실행합니다.
실행 시간 소스 코드 분석에는 시간이 걸리지만, 실행 파일은 빠르게 실행됩니다. 소스 코드 분석은 빠르지만, 실행 속도는 상대적으로 느립니다.
메모리 사용 중간 객체 코드 생성으로 인해 더 많은 메모리가 필요합니다. 중간 객체 코드가 생성되지 않아 메모리 사용이 효율적입니다.
디버깅 전체 프로그램을 스캔한 후 오류를 보고하므로 디버깅이 비교적 어렵습니다. 첫 번째 오류가 발생할 때까지 번역을 계속하므로 디버깅이 상대적으로 쉽습니다.
사용 언어 C, C++, C#, Java, Fortran, COBOL Python, Ruby, Basic, JavaScript, SQL, HTML

 

자바는 하이브리드...ㅋ

문법 오류 없을 시 번역 가능


참고

  • 독하게 시작하는 자바 part 1
  • 초보개발자를 위한 자바 - 책/유튜브
반응형