반응형
목록
분류 전체보기 (292)
[꼼꼼한 개발자] 꼼코더
🛠 신기술은 이전 기술의 어깨를 딛고 개발자를 위해 발전한다. 지금까지 기계어, 어셈블리어, C, C++, 자바로 발전해온 프로그래밍 언어 분야에서 기술이 개발자를 어떻게 더 사랑하게 됐는지 살펴봤다. 🤖 기계어 개발자를 사랑하기에는 너무 초장기 기술 탄도의 궤적정도는 계산해 줬다. 🗣 어셈블리어 인간의 언어로 프로그램 작성이 가능하게 해 줬다. 💬 C 하나의 소스로 이기종 간의 이식성을 확보했다. 🧱 C++ 객체 지향 개념을 도입했다. 인간적인 사고의 프로그램 방식이다. ☕️자바 한 번의 컴파일로 이기종 간에 이식성을 확보했다. 포인터에 대한 개념 없이 프로그래밍을 가능하게 했다. 🍃 스프링 프레임 워크 기술이 인간에 대한 완전무결한 사랑을 꿈꾸다! 거대함 속의 단순함과 완벽함. 그리고 유연함! 아주 ..
🧱 C++ 언어 - 정말 인간적인 프로그래밍 방법론, 객체 지향 C++는 C에 객체 지향 개념을 도입함으로써 역사에 한 획을 그은 언어가 됐다. 객체 지향 관련은 추후 3장에서 다루도록 하자. ☕️ 자바 - 진정한 객체 지향 언어 C++은 순수 객체지향 개념의 가장 충실한 언어이지만 여기서 반전은 ‘객체 없이 프로그래밍이 가능하다는 점’이다. 객체 지향 언어의 중심에는 클래스(class)가 있다. 자바에서는 클래스를 떠나 존재할 수 있는 것은 아무것도 없는데 말이다. 주제로 돌아와서 C++은 ‘객체 지향 개념 도입’을 통하여 개발자에게 사랑을 안겼다. 그럼 자바는 어떻게 개발자에 대한 사랑을 실천했을까? 바로 가상 머신(Virtual Machine)이다. Write Once Use Anywhere 컴파일..
💪🏻 C 언어 - 강력한 이식성 / One Source Multi Object USe Anywhere C언어의 등장으로 기계 종류별로 코드를 작성하는 멀티 소스가 아닌. 단 하나의 소스파일인 싱글 소스만 만들면 되었었다. 그 이유인즉슨 “소스파일을 각 기계어에 맞는 컴파일러로 컴파일 시 각 기계에 맞는 기계어 목적 파일이 만들어진다.” 이 부분에서 어셈블리어 프로그래머가 C 언어를 만났을 때의 감동을 간접적으로 느껴졌길 바란다. 하지만 실제로는 그렇게 감동만 하지 않았었다. 운영체제가 하드웨어의 특성을 추상화하고 컴파일러는 운영체제별로 만들어져 공급하하게 된다. 그 운영체제들이 또 나름의 특성이 있었기에 하나의 소스로 각 기종별로 컴파일하기 전에 그 기종에 맞게 소스를 변경하는 작업이 필요했다. C 언어..
🎬 시작 스프링은 과거부터 현재까지 프로그래밍 발전사에서 그 정점에 있다고 해도 과언이 아니다. 스프링을 학습하기 전 과거에 어떤 기술들이 있었고 그 의미를 빠르게 학습해 보도록 하자. 🤖 기계어 - 0과 1의 행진 / 너무나 비인간적인 언어 기계어는 기계가 이해하는 유일한 언어이다. 2진 숫자인 0과 1로만 표현된다. 기계어 코드는 CPU에 따라 다르다. (’ 에드삭 전용’ 기계어 ↔ ’ 유니박 전용’ 기계어 서로 간에 호환 불가) 에드삭(EDSAC) 전용 기계어 : 1 +3 01010101 00000001 00011001 유니박(UNIVAC) 전용 기계어 : 1 + 3 110111100 00011000 10011000 애드삭 : 모리스 월키스 제작, 2진법을 적용한 세계 최초의 프로그램 내장 방식 전..
💬 소감 많은 주변 지인들을 볼 때 이런 경우 포기하는 경우가 많다. 하지만 개발자가 되고 싶다면 오히려 이걸 즐겨야 한다고 생각했고 나 또한 즐기면서 구글링에 임했다. 구글링을 하면서 얻어가는 내용(지식)들이 많았고 그 끝에 성공(정상작동)의 결과를 맛봤을 때 나름 쾌감(?)도 있는 거 같다. 이제 내일은 또 어떤 시련이 닥칠지 걱정과 설렘이 동반한다.. (소감 부터 적고 싶어 미리 적어봤다) 🎬 시작 이제 새로운 교재로 다시 스프링을 시작했다. 먼저 말하자면 나는 MAC M1칩을 사용한다. 이전 ‘김영환’님의 영상 강의의 개발환경은 아래와 같고 OS : MAC Tool : IntelliJ 새로운 교재에서의 개발환경은 아래와 같이 기존과 많이 달랐다. OS : Window Tool : Eclipse o..
💬 지금까지 나는 기존에 인프런에서 ‘김영환’님의 스프링 강의를 들었었다. 하지만 초창기에는 “어렵다..이게 도대체 뭐지..” 싶었다. 따라서 나는 각 코드마다 해석하기 바빴고 이해도는 매우 낮았던 나는 결과적으로 느꼈었다.. 숨겨졌던 ‘나의 기본기 부족’이 수면 위로 올라온 것이었다. 나는 그때 강의를 멈추고 기본기를 다시 다지러 갔어야 했었다..하지만 학습 진도에 눈이 먼 나머지 결국 강의를 이어서 들었고 중후반에 들어서 나의 모습은 clone 코딩만 하는 모습이었다. 🍃 변화 비록 비효율적인 공부법이어도 얻어가는 것들도 있었다.. SOLID, 의존성 등등.. 하지만 스스로를 객관적으로 보았을 때 “너 스프링 할 줄 알아?”라고 묻는다면 나의 답변은 ‘아니’다. 이 부분이 너무 크게 다가왔었다. 나는..
🙋🏻♂️ 간단정리 (활용조건) HashMap : 일반적으로 사용 일반적으로 빠르고 오버헤드가 적기 때문. LinkedHashMap : 삽입한 순서대로 키 정보를 얻고 싶을때 사용 TreeMap : 정렬된 순서대로 키 정보를 얻고 싶을때 사용 Hashtable : 병렬 처리를 하면서 자원의 동기화를 고려해야 하는 상황일 때 사용. 🔑 HashMap 검색과 삽입 : O(1) 시간이 소요. 키의 순서 : 무작위. 구현 : 연결리스트로 이루어진 배열. null : key와 null value를 모두 허용. ↔️ LinkedHashMap 검색과 삽입 : O(1) 시간이 소요. 키의 순서 : 삽입한 Key의 순서대로 정렬. 구현 : 양방향 연결 버킷(double-linked bucket)으로 구현되어 있다. 🌳 ..
👨🏻🏫 간단정리 ‘’가 들어간 자바 코드. ‘’ 안에 타입 파라미터가 위치한다. 클래스, 인터페이스, 메소드를 정의할 때 타입을 파라미터로 사용하여 컴파일 시 구체적인 타입이 결정될 수 있도록 도와주는 것. ❓ 제네릭(Generic)이란? 자바 5 부터 새로 추가된 기능. ‘’ 안에 타입 파라미터가 위치 컬렉션, 람다식(함수적 인터페이스), 스트림, NIO에서 널리 사용된다. 클래스, 인터페이스, 메소드를 정의할 때 타입을 파라미터로 사용하여 컴파일 시 구체적인 타입이 결정될 수 있도록 도와줍니다. 제네릭은 클래스와 인터페이스만 적용되기 때문에 자바 기본 타입(Primitive Type)은 사용할 수 없다. 😊 제네릭의 장점 1️⃣ 컴파일 시 강한 타입 체크를 할 수 있다. 컴파일 시 에러를 다 도출해..