<혼자 공부하는 파이썬> Python이 인기 있는 3가지 이유
요즘 프로그래밍 언어 중 파이썬이 정말 인기가 높습니다. 인기의 비결은 무엇일까요? 간단하게 알아보겠습니다.
혼공족장

한빛이 엄선한 채널.H 시리즈를 만나보세요

혼자 공부하는 사람들을 위한 읽을거리를 모았습니다.
79개
총 79개
요즘 프로그래밍 언어 중 파이썬이 정말 인기가 높습니다. 인기의 비결은 무엇일까요? 간단하게 알아보겠습니다.
혼공족장

인터렉티브 셸과 텍스트 에디터에 대하여 알아보겠습니다.
혼공족장

궁금합니다. 프로그래머가 되기 위해서 C 언어가 필수 인가요? 답을 드립니다. 아니요. 꼭 배워야 한다고 말씀드리는 대신에 효용을 말씀드릴께요. C 언어는 컴퓨터가 어떻게 작동 하는지 이해하는데 큰 도움이 될 겁니다. 다른 프로그래밍 언어를 배우기 위해서도 필수적인 존재로 인정 받는 이유죠. 대표적인 프로그래밍 언어인 C언어와 자바의 차이점을 확인해보시는 것도 좋겠습니다. C 언어란? 1980년대에 IBM이 개인용 컴퓨터를 만들어 보급하기 전에는 우리에게 친숙한 윈도우나 맥이 없었습니다. 컴퓨터 산업 초기에는 주로 회사에서 사용하는 컴퓨터에 유닉스 (Unix)라는 운영체제를 사용한 것이죠. 그 시절 문제가 하나 있었는데요. 유닉스에서 실행되는 프로그램은 하드웨어가 바뀌면 새로 개발해야 했습니다. 여러분의 PC에서 그래픽 카드 바꾼다고 새로 프로그램을 개발해야 한다고 생각해보세요. 굉장히 귀찮고 어려운 일이죠. 이런 불편함을 해결하고자 데니스 리치와 켄 톰슨은 B 언어(A 언어도 있어요!)를 발전 시켜 1972년 C 언어를 만들었습니다. 프로그래밍을 배우기 위해서 반드시 C 언어를 먼저 배워야 한다고 말씀드리는 것은 아니에요. C 언어 학습으로 습득한 프로그래밍 언어의 기본적인 문법이 다른 하이레벨 언어를 학습할때 뿐만 아니라, 컴퓨터 작동의 기본 원리를 아는데 도움이 될 것입니다. 그래서 프로그래밍 언어를 공부하고자 하는 많은 학생들에게 첫 관문이 되고 있다고 할 수 있습니다. C 언어의 특징 간단하게 C언어의 특징을 알아보겠습니다. ① 시스템 프로그래밍이 가능하다. 운영체제를 개발할 목적으로 만든 언어이므로 하드웨어를 제어하는 시스템 프로그래밍이 가능합니다. ② 이식성을 갖춘 프로그램을 만들 수 있다. 표준이 정의되지 않은 문법을 사용한 프로그램은 특정 컴파일러에서만 컴파일될 가능성이 높으므로 이식성을 유지하기 힘듭니다. 하지만 C 언어는 이식성을 갖춘 언어입니다. 프로그래밍계의 에스페란토어 와 같다고 할까요? 이식성이란? → 기종이 다른 컴퓨터에서도 사용할 수 있는 프로그램으로, 표준을 지켜 만들면 컴퓨터의 종류가 바뀌더라도 같은 프로그램을 계속해서 활용할 수 있습니다. ③ 작고 효율적이다. C로 짜여진 코드는 속도 가 빠르고 바이너리 크기 가 작습 니다. 이러한 특성 때문에 속도가 생산성보다 중요한 속도를 필요로 하는 임베디드 혹은 모바일 계열, 시스템 프로그래밍 등에서 주로 사용됩니다. 다만 수정 사항을 확인하려면 컴파일이 필요하며 디버깅이 어려워 학습자가 어려워하기도 합니다. ④ C 언어는 절차지향 프로그래밍 언어다. 절차지향 프로그래밍이란 물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법입니다. 지금까지 간단하게 C언어의 몇가지 특징 을 살펴봤고요. 두번째로 자바를 설명하겠습니다. Java(자바)란? 자바는 객체지향 프로그래밍 언어 (Object Oriented Programming) 로 1991년 썬 마이크로 시스템즈에서 개발했으며 현재는 오라클에서 관리하고 있는 언어입니다. 자바는 운영체제에 독립적인 언어로 전 세계 다양한 분야에서 사용하는 프로그래밍 언어입니다. 프로그래밍 언어의 순위를 보여주는 TIOBE 웹사이트의 데이터를 보면 자바는 2001년부터 지금까지 계속 1,2위를 다툴만큼 인기 있는 언어입니다. (참조링크 - https://www.tiobe.com/tiobe-index/java/ ) 개인용보다는 주로 산업계에서 많이 사용하던 자바는 안드로이드 폰의 등장으로 우리가 늘 접하는 스마트폰에서 돌아가는 다양한 앱을 개발하는 데에도 사용 되고 있습니다. 자바에는 Java API라 하여 자바 시스템 제어를 위한 명령어가 있습니다. 무료로 배포된 자바 개발 도구(JDK)와 풍부한 Java API를 활용해 강력한 기능의 자바 프로그램을 작성할 수 있습니다. Java(자바)의 JVM이란? 자바 프로그램은 완전한 기계어가 아닌, 바이트 코드 파일(.class)로 구성됩니다. 바이트 코드 파일은 운영체제에서 바로 실행할 수 없고, 자바 가상 기계(JVM) 라는 번역기 가 필요합니다. 자바가 JVM을 사용하는 이유는 바이트 코드 파일이 다양한 운영체제에서 독립적으로 사용이 가능하기 때문이에요. 예를 들어 개발자가 윈도우 10 운영체제에서 자바로 프로그램을 개발을 한다면, 개발 미완료된 프로그램도 완료된 프로그램도 맥(Mac), 리눅스(Linux)로 옮겨 바로 실행 가능합니다. 그림으로 다시 말하자면 C는 리눅스(Linux), 윈도우(Windows), 맥(Mac) 등 운영체제별로 운영체제 위에서 바로 실행되지만, 자바는 운영체제 위의 JVM 에서 실행됩니다. Java(자바)의 특징 ① 여러 운영체제에서 실행 가능 자바로 작성된 프로그램은 JVM 위에서 실행 되므로 운영체제를 가리지 않습니다. 따라서 윈도우에서 개발된 프로그램을 수정하지 않고 바로 리눅스, 맥에서도 실행할 수 있다는 장점이 있습니다. ② 객체지향 프로그래밍 언어 절차지향인 C와는 다르게 자바는 객체지향 프로그래밍 언어 중 하나로, 객체(부품)를 만들고, 이 객체들을 서로 연결해서 더 큰 프로그램을 완성합니다. ③ 메모리 자동정리 자바는 메모리(RAM)를 자동 관리 하므로, 개발자는 메모리를 관리하는 수고를 덜고 핵심 기능인 코드 작성에 집중할 수 있습니다. ④ 무료 라이브러리 풍부 무료로 다운로드해서 사용할 수 있는 오픈 소스 라이브러리가 풍부하기 때문에 프로그램 개발 기간을 단축합니다. 그래픽 사용자 인터페이스의 제작(GUI 설계), 데이터베이스 접근, 다중 스레드, 네트워크 프로그래밍 등은 모두 표준 라이브러리에서 지원합니다. C 언어와 Java의 차이점 정리 C 언어 JAVA(자바) 절차지향 vs 객체지향 순차적으로 읽어가는 절차지향 언어 설계적인 측면이 강조된 객체지향 언어 주로 사용하는 개발환경 비주얼 스튜디오(윈도우 기준) 이클립스(eclipse), 인텔리제이(IntelliJ) 처리속도 상대적으로 빠름 상대적으로 느림 유지보수 어려움, 꼬이게 되면 순차적으로 수정 용이함, 해당 객체만 찾아 수정 가능 용도 임베디드 또는 운영체제처럼 속도나 용량 등에서 최적화가 필요한 곳에서 주로 사용 웹 사이트나 운영체제와 상관없이 실행되어야 하는 응용SW, 안드로이드 앱 등에서 사용 안정성 & 확장성 상대적으로 낮음 상대적으로 높다 메모리 제어 메모리를 직접 조절하여 메모리 낭비가 적음 각각의 클래스로 인해 메모리 낭비가 높음 절차지향과 객체지향은 반대 개념이라고 할 수 없습니다. 절차지향은 데이터 중심으로 함수를 구현하며, 객체지향은 기능 중심으로 메서드를 구현하는 차이가 있을 뿐입니다. 긴 글 읽어주셔서 감사합니다! 유창하게 중국어나 스페인어를 구사 하려면, 어느정도 시간을 투자해야할까요? 아마도 꽤 오랜 시간 학습해야 할 겁니다. 프로그래밍 언어도 똑 같습니다. 처음 접하는 프로그래밍 언어는 낯 설수 있어요. 관심과 꾸준한 연습이 계속된다면 코딩 실력이 날로 향상 걸거라고 생각합니다. 중요한 것은 포기하지 않고 실행하는 것 아닐까요? If they can do it, why Can't I? 프로그래밍 학습을 중간에 포기하신 경험이 있으시다면, 이제 처음 독학으로 프로그래밍을 시작 하신다면, 처음부터 끝까지 진짜 혼자 공부할 수 있는 프로그래밍 입문서, 혼자 공부하는 C , 자바 , 파이썬 프로그래밍을 추천합니다!
혼공족장

프로그래밍 생각 정리 '변화'를 능동적으로 '소화'하는 사람 '스타 강사' 57세 김미경 저자는 그의 새 책의 목차에 '파이썬을 배우는 이유'을 포함했습니다. 쉰살이 넘은 나이에도 쉼없이 새로운것을 찾는 그의 이야기에서 한껏 용기를 얻은 동시에 내용이 궁금해졌습니다. '도대체 프로그래밍이 뭐길래 사람들이 관심을 가지게 된걸까요?' 그 해답을 찾기 위해 프로그래밍이란 무엇인지, 왜 배워야 하는지, 무엇을 배워야 하는지 를 알아보려고 해요. 어려운 내용은 없으니까 편하게 읽어 주세요. 프로그램 program 의 사전적 의미는 ‘특정 작업을 수행하는 일련의 명령어들의 모음 (집합체)’을 말해요. 문서 작성에 쓰이는 워드프로세서, 수치 계산을 포함해 각종 업무에 필수로 쓰이는 엑셀 , 4차 산업 혁명의 중요한 토픽 중 하나인 자율주행차 , 현대 사회에 없어서는 안 될 카카오톡 과 같은 메신저, 심 지어 이제는 항상 몸에 지니고 있는 스마트폰 까지, 우리가 접하는 거의 모든 것이 일련의 명령어들로 구성된 ‘컴퓨터 프로그램’으로 처리되고 있어요. 지금은 너무도 당연한 것처럼 느끼고 사용하고 있지만, 이 모든 것을 가 능하게 한 원동력은 바로 똑똑한 ‘컴퓨터 프로그램’의 힘이라고 할 수 있지요. 컴퓨터 프로그램은 소프트 웨어( software )라고 부르기도 합니다 프로그램, 프로그래밍, 코딩 이해하기 프로그래밍 programming 이란 프로그램을 만드는 행위를 의미하고, 프로그래밍을 하는 사람을 프로그래머 programmer 라고 해요. 그렇다면 코딩 coding 이란 무엇일까요? 코딩은 프로그래밍과 같은 말이에요. 어떤 사람들은 코딩과 프 로그래밍을 구분 지어 말하기도 하지만, 굳이 구분할 필요는 없어요. 구글 검색 사이트에서 ‘ how to code ’라는 검색어로 검색하면 수많은 검색 결과에서도 코딩과 프로그래밍이 같은 의미로 쓰인다는 것을 확인할 수 있어요. 정리해 볼까요? 프로그램 은 특정 작업을 수행하는 일련의 명령어들의 모음 을 의미합니다. 프로그래밍 은 프로그램을 만드는 행위 를 의미합니다. 프로그래머 란 프로그램을 만드는 사람 을 의미합니다. 코딩 은 프로그래밍 을 말하는 것으로 두 단어는 같은 의미 입니다. 프로그래밍을 배워야 하는 현실적 이유 애플을 창업한 스티브 잡스, 마이크로소프트를 창업한 빌 게이츠, 전 미국 대통령 버락 오바마 등 저명한 인사들이, 프로그래밍을 전공하지 않은 ‘프알못’도, 왜 프로그래밍을 배워야 한다고 말하는 걸까요? ‘프알못’은 ‘프로그래밍을 알지 못하는 사람’의 줄인 말이에요. 여러 가지 이유가 있겠지만, 다음 문장으로 요약할 수 있어요. “가장 강한 종이 살아남는 것이 아니고, 가장 지적인 종이 살아남는 것도 아니다. 변화에 가장 잘 적응하는 종이 살아남는다.” 『종의 기원』의 저자 찰스 다윈이 한 말이에요. 여기서 핵심은 이미 짐작했겠지만 ‘변화에 잘 적응하는 것’이에요. 아래 예는 실제 우리 생활 주변에서 벌어지고 있는 변화를 단적으로 보여 주는 사례입니다. 무려 14년(1998~2011년)간 휴대 전화 분야에서 세계 시장 점유율 1위를 자랑하던 노키아가 모바일 중심의 시장 변화를 제대로 읽지 못해 결국 휴대 전화 사업을 포기했어요. 무료 메시지를 보내던 것으로 시작한 카카오톡이 한국 IT 산업을 이끌던 다음커뮤니케이션과 합병한 후, 게임, 검색, 커머스, 엔터테인먼트, 교통, 심지어 진입 장벽이 높았던 금융 산업까지 진출해서 좋은 성적을 내고 있어요. 이제 카카오톡이 새로운 분야에서 비즈니스를 한다고 하면 전혀 놀라운 일이 아니게 된 거죠. 카카오(주)의 시가총액이 31조를 기록하여 21조인 현대자동차 보다 10조 이상 많아졌네요. / 2020년 7월 9일 기준 2016년 구글의 인공 지능 소프트웨어 알파고가 프로 기사로 세계를 주름 잡던 이세돌 9단을 4:1로 이기며 그동안 난공불락이라 여겨졌던 바둑계에 큰 이슈로 등장했어요. 전 세계가 놀랐고, 눈부 신 속도로 발전하고 있는 인공 지능 분야를 대중에게 알리는 계기가 되었습니다. 미국의 유명한 비즈니스 전문지 포브스는 2019년 세계에서 가장 가치 있는 브랜드로 애플, 구글, 마이크로소프트, 아마존, 페이스북을 선정했습니다. 모두 IT 산업을 대표하는 기업입니다. 이 모든 것이 우연이 아니에요. 이 변화의 중심에 기술 산업의 혁신 이 자리하고 있으며, 이러한 변화를 ‘프로그래밍’이 이끌고 있어요. 그렇다면 이러한 시대의 흐름에 맞춰 모든 사람이 프로그래밍 전문가가 되어야 할까요? 아니에요, 그렇지 않아요. 단지 요즘 일상생활에서 사용하고 있는 서비스 및 제품들이 모두 프로그램으로 이루어진 만큼 프로그래밍을 배워야 조금 더 빠르게 세상을 이해할 수 있을 거라는 생각입니다. 여러분 내면에 숨겨있던 프로그래밍 재능을 발견할 수 있는 것은 덤이고요. 앞으로 우리가 만나게 될 미래는 프로그래밍이 더는 선택이 아닌 시대가 될 것입니다. 여러분의 의사와 관계없이 변화는 이미 시작됐어요. 전 세계 대학교가 앞다퉈 인공 지능 교육 과정을 개설하고 프로그래밍을 필수 교육 과정의 하나로 지정하고 있으며, 우리나라도 초등학교에서 이미 프로그래밍 수업이 진행되고 있어요. 이러한 변화를 마냥 무시할 수만은 없겠죠? 프로그래밍을 배워야 하는 이유가 여기에 있습니다. 프로그래밍을 하려면 알아야 하는 것들 우리는 사람들과 언어 language 로 대화해요. 예를 들어 한국에 서는 한국어로 대화하고, 미국에서는 영어로 대화합니다. 마찬가지로 컴퓨터도 그들만의 언어, 즉 기계어 machine language 라고 불리는 언어가 있어요. 기계어는 0과 1로 모든 것을 표현하는 2진법 binary system 을 사용해요. 처음 컴퓨터가 발명됐을 때 전기 신호가 들어왔는지(1), 들어오지 않았는지(0)를 확인하기 위한 방법으로 2진법을 사용하기 시작해서 지금까지 사용하고 있어요. 기계어 그렇다면 프로그래밍을 하기 위해서 기계어를 배워야 할까요? 아닙니다. 컴퓨터가 발명된 초기에는 기계어로 코딩을 했지만, 프로그램이 복잡해지면서 어느 순간 기계어로 코딩을 하는 것이 사실상 불가능해졌고 마침내 컴퓨터 과학자들은 기계어의 대안을 찾기 시작했어요. 그 결과, 사람이 쉽게 이해할 수 있는 문자를 활용해서 프로그램을 만들 수 있는 새로운 언어를 개발했어요. 이 언어를 프로그래밍 언어 programming language 라고 해요. 말 그대로 프로그램을 만 드는 데 사용하는 언어라는 의미예요. 프로그래밍 언어가 등장하면서 드디어 우리는 2진법이 아니라 영어 알파벳, 한글 등을 사용해서 코 딩을 할 수 있게 되었습니다. 이때부터 프로그래밍을 다루는 산업이 빠르게 발전합니다. 프로그래밍 언어는 다음과 같이 크게 소스 코드 와 번역기 로 이루어져 있어요. '소스 코드'는 무엇인가요? 여러분이 무언가를 처음 배울 때를 생각해 보세요. 가장 기본적인 규칙을 배우죠? 컴퓨터도 마찬가 지예요. 프로그래밍 언어가 있고 그 언어의 기본 규칙에 따라 프로그램을 작성해요. 이렇게 작성된 프로그램을 소스 코드 source code 라고 합니다. 그러나 이를 컴퓨터가 사용하는 기계어로 번역하는 과정 이 한 번 더 필요해요. 소스 코드는 사람이 사용하는 문자인 알파벳, 한글, 숫자 등으로 이루어져 있기 때문에 컴퓨터는 이를 이해할 수 없고, 따라서 실행할 수도 없어요. '번역기'가 왜 필요한가요? 여러분이 작성한 소스 코드는 프로그래밍 언어의 번역기 ( 컴파일러 compiler 혹은 인터프리터 interpreter )를 통해서 기계어로 번역되고, 그 결과 컴퓨터에서 실행 가능한 프로그램이 만들어져요. 영어를 모르는 사람은 앞에서 유창하게 영어로 하는 말을 알아들을 수 없겠지요? 하지만 번역기를 사용해 영어를 우리말로 바꾸어 주면 알아들을 수 있습니다. 결국 프로그래밍이라는 것은, 1. 프로그래밍 언어의 문법에 따라 소스 코드를 작성 하고, 2. 소스 코드를 프로그래밍 언어가 제공하는 번역기를 사용해서 기계어로 번역하는 과정 을 말합니다. 그렇다면 ‘프로그래밍을 하려면 무엇을 배워야 할까요?’에 대한 답이 구해졌죠? “프로그래밍을 하려면 프로그래밍 언어를 배워야 해요.” 따라서 프로그래밍 언어를 배운다는 것은 위에서 설명한 ‘프로그래밍을 하는 방법’을 배우는 것과 같습니다. 1. 프로그래밍 언어의 문법에 따라 소스 코드를 작성하는 방법 을 배워야 하고, 2. 프로그래밍 언어가 제공하는 번역기를 사용해서 소스 코드를 기계어로 번역하는 방법 을 배워야 합니다. 문법을 배우는 것도 모자라 기계어로 번역하는 방법까지 배워야 한다니, 영어보다 더 어렵게 느껴지나요? 하지만 걱정하지 마세요. 처음부터 외국어를 잘 하는 사람은 없어요. 지금까지 이야기한 것을 머릿속에 쏙쏙 집어넣고 마무리하겠습니다. 컴퓨터와 대화하기 위해서는 컴퓨터가 이해하는 언어, 즉 기계어 를 배워야 합니다. 기계어는 1과 0으로 모든 것을 표현하는 2진법 을 사용합니다. 기계어는 사람이 이해하기 매우 어렵기 때문에 기계어를 대체할 수 있는 새로운 언어, 즉 프로그래밍 언어 가 등장했습니다. 프로그래밍 언어 는 크게 소스 코드와 번역기 로 구성됩니다. 프로그래밍 언어의 문법에 따라 사람이 이해 할 수 있는 문자, 영어 알파벳으로 작성된 프로그램을 소스 코드 라고 합니다. 프로그래밍 언어가 제공하는 번역기 를 이용해서 소스 코드를 컴퓨터가 이해할 수 있는 기계어로 번역 해야 합니다. 혼공 첫 프로그래밍 입체 표지 프로그래밍에 관심이 생기셨나요? 좀 더 자세히 알아 보시려면 용어노트와 동영상 강의를 참고해 보세요! 》 용어 노트 다운로드 》 무료 강의 동영상
혼공족장

Q: 과연 비전공자도 개발자로 취업할 수 있을까요? A: 네, 대답부터 드리자면 비전공자도 얼마든지 개발자로 취업할 수 있습니다.
혼공족장

요즘은 초등학생도 코딩을 배운다는 소식에 일단 프로그래밍을 독학에 도전하는 분들이 늘고 있습니다. 하지만 비전공자라면 프로그래밍 배경지식이 없으므로 어떤 언어를 선택해서 공부해볼지 감이 오지 않습니다. C, 자바(Java), 파이썬(Python), 코틀린(Kotlin), 스위프트(Swift), 자바스크립트(JavaScript)..! 수많은 언어 때문에 눈이 핑핑 돌아갑니다. 🤮 그래서 프로그래밍 좀 한다는 친구들에게 어떤 언어가 좋은지 물어보면 이렇게 말합니다. 😁: "C언어. 왜냐하면 그것이 근본이니까. (끄덕)" 😡: "국내에서 돈 벌고 싶으면 자바 배워.자바." 😖: "모바일은 아이폰! 틈새시장은 역시 스위프트지 암~" 🤬: "아니~! 자바스크립트를 해야지, 대세 모름??" 🙄: "엥? 쉽고 빠르고 범용성도 좋은 파이썬 놔두고 뭔소리..?" 사실 언어는 목적에 맞게 배우는 것이 가장 좋습니다.독일로 유학을 가야 한다면 독일어를 먼저 배우는 것이 좋은 것처럼 안드로이드 앱을 만들어야 한다면 코틀린을, 아이폰 앱을 만들어야 한다면 스위프트를 배우면 되는 거죠! 하지만 우리의 삶은 짧고 모든 언어를 배울 순 없어요. 그렇다면 프로그래밍이 완전히 처음인 사람은 어떤 기준으로 언어를 선택하면 좋을까요? "Life is short you need python." 라는 말이 있듯이 배우기 쉽고, 인기가 많고, 다른 언어와 궁합이 좋은 파이썬 을 선택하는 것을 추천합니다👍 1. 파이썬은 배우기 쉽다. 인터넷 브라우저 창을 열어 이메일을 보내거나 뉴스 기사에 댓글을 달 줄 안다면 누구나 파이썬 공부를 시작할 수 있을 정도로 쉽습니다. 쉽다는 것은 상대적인 개념이지만, 전 세계 프로그래밍 전문가들이 배우기 쉬운 프로그래밍 언어로 항상 파이썬을 우선순위에 둔다면 어느 정도 객관적이라고 해도 되겠죠? 구글에서 ‘배우기 쉬운 프로그래밍 언어’로 검색하면 아래와 같습니다. HTML은 프로그래밍 언어로 보기 힘들다는 점을 고려한다면, 파이썬이 제일 배우기 쉬운 것으로 조사된 결과를 확인할 수 있습니다. 다른 조사에서는 1위가 아닐 수 있겠지만, 항상 순위권에 들어간다는 것은 변함이 없습니다. 프로그래밍 언어가 쉽다는 것은 “최소한의 문법” 으로 “최대한 간결” 하게 소스 코드를 작성할 수 있다는 것을 의미합니다. 아래는 C언어와 자바 그리고 파이썬으로 hello world를 출력하는 소스코드 입니다. 언어별로 고유한 문법을 가지고 있어서 이에 따라 난이도가 달라지는데, 아래 예시를 보면 프로그래밍을 하나도 몰라도 파이썬으로 작성한 코드가 가장 짧다 는 것을 확인할 수 있습니다. 소스 코드 1 - C언어 #include int main() { printf("Hello, World!"); return 0; } 소스 코드 2 - 자바 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } 소스 코드 3 - 파이썬 print("Hello, World!") 2. 파이썬은 인기가 많다. 프로그래밍 언어가 인기가 많다는 것은 궁금한 점이 있을 때 쉽게 해결책을 찾을 수 있다는 점에서 중요합니다. 인기가 없는 프로그래밍 언어라면 궁금한 점이 있어도 해결책을 찾기가 쉽지 않아 공부하기 어렵습니다. 따라서 프로그래밍을 처음 공부하는 사람은 가장 인기 있는 언어를 선택하는 것이 합리적이겠죠? 어떤 언어가 가장 많이 사용되는지 한 번 살펴볼까요? TIOBE라는 곳에서 조사한 프로그래밍 언어 검색어 순위를 보면, 전세계적으로 C언어, 파이썬, 자바 순으로 인기가 있다는 것을 알 수 있습니다. 파이썬은 2017년 이후로 지금까지 가장 🔥핫한 언어🔥이기도 합니다. 2011년 말부터 2017년 상반기까지 스택 오버플로에서 이루어진 주요 프로그래밍 언어의 질문 조회 수를 집계한 결과, 2012년부터 파이썬 사용자는 놀라운 속도로 늘어났고, 결국 2017년 6월에 파이썬이 1위를 합니다. 또한 주요 프로그래밍 언어(파이썬, 자바, 자바스크립트, C)에 대한 트렌드를 살펴보면 2012년부터 시작된 파이썬에 대한 관심이 식을 줄 모르고 계속 증가하고 있다는 것을 다시 한번 확인할 수 있습니다. 이 정도면 파이썬의 인기가 실감 되시죠? 출처: Stack Overflow Trends 3. 파이썬은 프로그램 개발 속도가 빠르다. 어떤 프로그래밍 언어가 ‘빠르다’ 또는 ‘느리다’라고 말하려면 다음과 같이 두 가지 측면을 고려해야 합니다. 컴퓨터가 프로그램을 실행하는 속도 사람이 프로그램을 개발하고 유지 보수하는 속도 첫 번째 측면에서 보면 파이썬은 상대적으로 C 언어나 자바 언어보다 느립니다. 하지만 두 번째 측면을 고려하면 파이썬은 다른 어떤 언어보다 빠르다고 볼 수 있습니다. 쉬운 문법, 거대한 라이브러리, 활발한 커뮤니티 등은 개발 속도를 향상시키는 데 많은 도움이 됩니다. 최근에는 컴퓨터 성능이 향상되어 프로그램 실행 속도의 중요성은 점점 작아지고, 급변하는 사회 트렌드에 대응하기 위해 빠른 개발의 중요성은 점점 커지고 있습니다. 어떤 서비스를 개발한다고 했을 때 프로그램 실행 속도를 1~2초 단축하기 위해 개발 기간이 3개월 걸리는 자바 언어나 C 언어보다 아니면 프로그램 실행 속도가 1~2초 느리지만 개발 기간이 일주일 걸리는 파이썬을 선택하겠죠? 실행 속도가 조금 느리더라도 개발 속도를 끌어올리는 결정을 내리는 것이 최근의 추세입니다. 인스타그램과 유튜브도 파이썬으로 서버를 개발했답니다! 4. 파이썬은 다른 언어와 궁합이 좋다. 세상에 존재하는 중요한 모듈은 C 언어로 작성된 것이 많습니다. C언어가 프로그래밍 역사에서 오랫동안 큰 역할을 했기 때문이지요. 🤔그럼 C 언어도 배워야 할까요? 🙅♂️그렇지 않습니다. 파이썬은 스스로 접착제 언어 glue language라고 홍보할 정도로 다른 언어와 궁합이 좋기 때문입니다. 즉, 다른 언어와 섞어 쓰기 좋다는 것입니다. 예를 들어, C언어로 작성된 중요 프로그램을 가져다가 파이썬에서 쉽게 활용할 수 있습니다. 이렇게 되면 앞서 이야기했던 프로그램 실행 속도가 느리다는 파이썬의 단점을 거의 완벽하게 보완할 수 있죠. 이를테면 실행 속도가 느릴 것으로 예상되는, 수리적인 계산이 필요한 부분은 C 언어로 작성하여 프로그램 실행 속도를 높이고, 나머지 다른 부분은 파이썬으로 작성해서 개발 속도를 높여 두 프로그램을 결합하면 C 언어의 장점과 파이썬의 장점을 동시에 활용할 수 있죠! 다른 언어도 파이썬과 마찬가지로 C 언어로 작성된 프로그램을 가져가 활용할 수 있지만, 그 과정이 복잡해서 잘 사용하지 않습니다. 반면, 파이썬은 다른 언어와 접착제만 발라 붙여서 사용할 수 있다고 비유할 수 있을 정도로 간단합니다. 최근 데이터 사이언스 분야에서 파이썬이 주목받으며 거의 표준으로 자리 잡고 있는 이유가 바로 여기에 있습니다. 다른 언어로 만든 프로그램을 마치 원래 파이썬 프로그램이었던 것처럼 사용할 수 있고, 그 방법이 간단하기 때문이지요. 머신러닝과 관련하여 가장 인기 있는 프로그램인 텐서플로tensorflow, 넘파이numpy, 판다스pandas 등이 이러한 파이썬의 장점을 충분히 살려서 작성되었습니다. 지금까지 프로그래밍 독학을 파이썬으로 시작해야 하는 4가지 이유에 대해 알아보았습니다. 다른 언어 보다 배우기 쉽다. 인기가 많아서 해결책을 찾기 쉽다. 프로그램 개발 속도가 빠르다. 다른 언어와 궁합이 좋다 . 프로그래밍을 독학으로 처음 시작해보고 싶다면, 으로 입문 과정을 밟아보세요. IT 개념 이해가 필요하신 비전공자도 이해하기 쉬운 책 입니다. 유튜브에서 무료 동영상 강의를 제공하고 있으니 확인해보세요! 👀 도서 자세히 보기 👨💻 유튜브 강의 보기
혼공족장

독학으로 자바스크립트 공부를 하다 보면 많은 어려움에 부딪히게 됩니다. 특히 오류를 만날 때 너무나 당황스럽습니다. 책에 적혀있는 예제 그대로 따라 했는데, 왜 오류가 날까요? 아무리 봐도 잘못 입력한 곳이 없는 것 같은데, 책이 잘못된 걸까요? 흠,,, 당장 도움을 요청할 곳도 없는데 어떡하죠? 처음 프로그래밍을 공부하는데 벌써 막히기 시작하니 슬슬 짜증이 나기 시작합니다. 빨리 이 문제를 해결하고 다음 문제로 넘어가고 싶은데 말이죠. “내 코드, 대체 어디에 문제가 있는 걸까요? 이 문제를 해결하려면 어떻게 해야 할까요?” 🤔 다음 HTML 문서를 크롬 브라우저에서 실행해보겠습니다. 자바스크립트로 알림창(alert)을 띄우는 코드인데, 아래와 같이 Hello World가 잘 나오기를 기대해봅니다. 이런, 아무 것도 뜨지 않습니다. 🤬🤬🤬 아무래도 어디에 문제가 발생한 것 같은데, 직접 알아봐야겠습니다. 🔥🔥 크롬 개발자 도구로 자바스크립트 오류 확인하기 이러한 문제를 흔히 컴퓨터에서는 ‘오류’ 가 발생했다고 합니다. 내가 작성한 코드에 어떤 오류가 발생한 것인지 확인하는 방법을 알려드리겠습니다. 크롬 브라우저에서는 ‘개발자 도구’ 라는 유용한 기능을 제공합니다. 개발자 도구는 크롬 브라우저 메뉴에서 [ 도구 더 보기] - [개발자 도구] 를 클릭하여 실행할 수 있고, 단축키 [F12] 또는 [Ctrl]+[Shift]+[I] 를 동시에 눌러도 개발자 도구를 실행할 수 있습니다. 개발자 도구를 열어보겠습니다. 개발자 도구 메뉴 옆에 X 표시가 되어 있는 붉은색 원과 숫자로 오류가 1개 있다고 뜨네요. 이 부분을 누르면 브라우저 오른쪽 하단에 [Console] 창이 뜨면서 어떤 오류가 발생했는지 확인할 수 있습니다. ' 다음과 같은 오류가 떴습니다. Uncaught SyntaxError: missing ) after argument list Untitled-1.html:4 개발자 도구에서는 오류가 발생했을 때 친절하게도 어떤 오류가 발생했는지, 어느 위치에서 발생했는지 알려줍니다. 이 오류는 무엇을 뜻하는 걸까요? 오류는 ① 오류 유형: ② 오류 내용 ③ 오류 위치 의 순서로 공식처럼 내용을 알려줍니다. 내용을 해석하면 SyntaxError 가 발생하였다는군요. 흠,,, 닫는 괄호 ' ) '가 빠졌다고 합니다. 오류 메시지 바로 옆에는 Untitled-1.html 문서 4번째 줄에 오류 가 있다는 뜻입니다. 실제 코드를 다시 확인해볼까요? 개발자 도구가 알려준 대로 문제가 있는 부분을 살펴보니 역시 코드 4번째 줄 alert(“Hello World” 부분에 ) 괄호를 제대로 닫지 않았습니다. 괄호를 닫아 코드를 수정하여 간단하게 문제를 해결하고, 크롬 브라우저로 HTML 문서를 다시 실행합니다. 웹페이지가 열려있었다면 새로 고침 단축키 [F5]를 눌러도 됩니다. 알림창이 제대로 실행되었습니다. 야호~! 이제 다음 예제를 실습할 수 있겠네요! 위와 같은 오류를 구문 오류 syntax error 라고 합니다. 다행히 이번에는 간단하게 오류를 해결할 수 있었지만, 실습을 하다 보면 단순하게 해결할 수 없는 다양한 오류를 만나게 됩니다. 자바스크립트에 어떤 다양한 오류가 있는지 한번 살펴보겠습니다. 🤮🤮🤮 자바스크립트 오류 유형 자바스크립트에는 위에서 보았던 구문 오류 외에도 다양한 오류 유형이 있습니다. EvalError : eval() 함수와 관련한 오류가 발생했을 때 InternalError : 자바스크립트 엔진 내부에서 오류가 발생했을 때 RangeError : 숫자 변수나 매개변수가 유효한 범위를 벗어났을 때 ReferenceError : 잘못된 참조를 했을 때 SyntaxError : 코드 분석 중 잘못된 구문을 만났을 때 TypeError : 변수나 매개변수가 유효한 자료형이 아닐 때 URIError : encodeURI()나 decodeURI() 함수에 부적절한 매개변수를 제공했을 때 이 오류들은 ‘자바스크립트 내장 에러 객체’라고 합니다. 자바스크립트 코드에 문제가 있을 때 오류 생성자가 [Console] 창에 오류 유형을 보여주기 때문에 개발자는 이 오류 유형을 보고 코드에 어떤 오류가 났는지 짐작할 수 있습니다. 다양한 오류 중 입문자가 가장 실수하기 쉬운 유형이 앞서 살펴 본 SyntaxError(구문 오류)입니다. 익숙하지 않은 코드를 작성하다 보니 오타를 내 거나 쉼표, 괄호, 따옴표와 같은 기호를 빠뜨리거나 더 입력하는 등 사소한 오입력으로 오류를 내는 것이죠. 이러한 오류는 웹 브라우저에서 실행조차 되지 않고 실행 전에 오류를 내기 때문에 오류 위치를 개발자 도구에서 정확하게 확인할 수 있습니다. 입문자도 비교적 쉽게 해결할 수 있는 오류여서 오류를 만날 때마다 코드 작성에 주의하다 보면 점점 오류를 줄일 수 있습니다. SyntaxError 외의 나머지 오류는 코드를 실행하는 중에 생기는 오류입니다. 이를 런타임 오류 runtime error 또는 예외 exception 라고 합니다. 이 중 ReferenceError 는 숙련된 자바스크립트 개발자도 자주 만나는 오류이기도 하죠. 예외는 위처럼 단순한 오탈자로 발생하는 오류도 있지만, 오탈자를 고치는 것만으로는 해결할 수 없는 예외도 있습니다. 이럴 때 자바스크립트에서는 ‘예외 처리’라는 것을 합니다. 예외 처리는 예외가 발생했을 때 프로그램이 중단되지 않게 처리하는 것으로, try-catch-finally 구문을 사용하여 예외가 발생하여도 프로그램이 그대로 실행되도록 합니다. *관련 문서: Error - JavaScript | MDN https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Error 지금까지 크롬 개발자 도구로 자바스크립트 오류를 확인하는 방법과 자바스크립트의 7가지 오류 유형에 대해 알아보았습니다. 자바스크립트를 공부하다 보면 다양한 오류를 만나고 해결 방법을 고민하게 됩니다. 다양한 오류를 해결하고 예외를 처리하는 방법에 대해 더욱 자세히 알고 싶다면 364쪽 을 살펴보세요. 단순한 구문 오류부터 예외 처리까지 자바스크립트 오류에 답답한 입문자에게 꼭 필요한 내용 만 담아두었습니다. 오류를 만날 때마다 ‘이런 상황에는 이런 오류가 나는구나’하고 기억하고, 스스로 오류를 해결해보면서 코딩 공부를 해보세요. 어느샌가 실력이 쑥쑥 자라있을 겁니다. W😁W 👀도서 자세히 보기 👨💻유튜브 무료 강의 보기
혼공족장

인공지능은 사고나 학습 등 인간이 가진 능력을 컴퓨터를 통해 구현하는 기술입니다. 인공지능은 일반 컴퓨터의 처리 방식과는 다르게, 사람이 원하는 결과 데이터를 제공하면 인공지능이 알아서 처리 방법을 만들어 사람에게 처리 결과를 보여줍니다. 그리고 인공지능에는 머신러닝과 딥러닝이 있습니다. 머신러닝과 딥러닝의 가장 큰 차이점은 학습할 데이터에 있습니다. 머신러닝은 학습에 필요한 feature(특징)을 사람이 직접 제공해야 하지만, 딥러닝은 스스로 feature를 추출해서 데이터 학습에 적용할 수 있습니다. 조금 더 자세히 살펴볼까요? 🤖머신러닝(machine learning) 머신러닝 은 컴퓨터가 학습할 수 있도록 하는 알고리즘(처리 방법)과 기술을 개발하는 분야로, 알고리즘을 이용해 데이터를 분석하고, 분석을 통해 학습하며, 학습한 내용을 기반으로 판단이나 예측을 합니다. 머신러닝은 학습 방법에 따라서 유형이 4가지로 구분됩니다. 1. 지도 학습(Supervised Learning) 정답이 있는 데이터를 활용해 데이터를 학습시키는 방법 종류: 분류(Classification), 회귀(Regression) 2. 비지도 학습(Unsupervised Learning) 정답이 없는 데이터를 군집화하여 새로운 데이터에 대한 결과를 예측하는 방법 종류: 클러스터링, k-means 3. 준지도 학습(semi supervised) 지도 학습과 비지도 학습의 중간에 해당하는 기술로, 명확한 정답이 존재하나 정답이 있는 데이터를 구하기 힘들 때 사용 4. 강화 학습(Reinforcement Learning) 주어진 환경에서 어떤 행동을 취하고 이로부터 어떤 보상을 얻으면서 학습을 진행 개념: 에이전트, 환경, 상태, 행동, 보상 🤖딥러닝(Deep learning) 딥러닝 은 머신러닝의 한 분야로, 뇌의 뉴런과 유사한 정보 입력층 계층을 활용해 데이터를 학습합니다. 딥러닝은 굉장한 양의 연산을 필요로 하기 때문에 하드웨어가 발달하지 않은 초기에는 어려웠지만 기술이 발달함에 따라 슈퍼컴퓨터를 기반으로 이러한 문제점을 해결했으며, 병렬 연산에 최적화된 GPU가 개발되면서부터 딥러닝 기술이 발전하게 되었습니다. 1. AN N(Artificial Neural Network) 위에서 설명한 머신러닝의 한 분야인 딥러닝은 인공신경망(Artificial Neural Network)를 기초로 하고 있는데요. 인공신경망이라고 불리는 ANN은 사람의 신경망 원리와 구조를 모방하여 만든 기계학습 알고리즘 입니다. 인간의 뇌에서 뉴런들이 어떤 신호, 자극 등을 받고, 그 자극이 어떠한 임계값을 넘어서면 결과 신호를 전달하는 과정에서 착안한 것입니다. ANN은 입력 값을 이용하여 인공 뉴런의 출력 값을 계산하고, 인공 뉴런이 계산한 출력 값과 사용자가 기대하는 출력 값을 비교합니다. 이때 기대하는 출력 값을 생성할 수 있도록 가중치를 조절합니다. 그러나 ANN은 이러한 학습 과정에서 최적의 파라미터를 찾기 어렵고 학습 시간이 너무 느리다는 문제가 있습니다. 2. DNN(Deep Neural Network) ANN기법의 여러 문제가 해결되면서 모델 내 은닉층을 많이 늘려서 학습의 결과를 향상시키는 방법이 등장하였고 이를 DNN(Deep Neural Network)라고 합니다. DNN은 은닉층을 2개 이상 지닌 학습 방법을 뜻합니다. 컴퓨터가 스스로 분류레이블을 만들어 내고 공간을 왜곡하고 데이터를 구분짓는 과정을 반복하여 최적의 구분선을 도출해냅니다. 많은 데이터와 반복학습이 필요하며 사전학습과 오류역전파 기법을 통해 현재 널리 사용되고 있습니다. 그리고 DNN을 응용한 알고리즘이 바로 CNN, RNN입니다. (이 외에도 LSTM, GRU 등이 있습니다.) . 3. CNN(합성곱신경망 : Convolution Neural Network) 기존의 방식은 데이터에서 지식을 추출해 학습이 이루어졌지만, CNN은 데이터의 특징을 추출하여 특징들의 패턴을 파악하는 구조입니다. CNN은 사람의 시신경 구조를 모방한 것으로, 데이터를 feature로 추출하여 이 feature들의 패턴을 파악하는 구조입니다. feature 추출은 Convolution 과정과 Pooling 과정을 통해 진행됩니다. CNN은 Convolution Layer와 Pooling Layer를 복합적으로 구성하여 알고리즘을 만듭니다. Convolution : 데이터를 추출하는 과정으로 데이터에 각 성분의 인접 성분을 조사해 특징을 파악합니다. 여기서 도출된 특징을 추상화하여 특정 층으로 압축하며 이렇게 도출된 층을 Convolution Layer라고 부릅니다. Pooling : Convolution과정을 거친 Layer의 사이즈를 줄이는 과정입니다. 데이터 사이즈를 줄여 노이즈를 없애고 일괄적인 feature를 제공합니다. 보통 Convolution 과정에서 만들어진 feature의 가장 큰 값만 가져와 사이즈를 줄이는 데, 이것을 max pooling이라고 합니다. . 4. RNN(순환신경망 : Recurrent Neural Network) RNN은 입출력을 시퀀스 단위로 처리하는 시퀀스 모델입니다. 앞서 나온 신경망은 은닉층에서 활성화 함수를 지난 모든 값은 오직 출력층 방향으로만 향했습니다. 그러나 RNN은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로 보내고, 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징이 있습니다. 이 순환구조를 이용하여 과거의 학습을 W(weight)를 통해 현재 학습에 반영합니다. 기존의 지속적이고 반복적이며 순차적인 데이터 학습의 한계를 해결한 알고리즘으로, 현재의 학습과 과거의 학습의 연결이 가능합니다. 지금까지 머신러닝과 딥러닝의 알고리즘에 대해 알아보았습니다. 다음 시간에는 딥러닝 프레임워크 별 장단점에 대해 안내드리겠습니다. 딥러닝의 등장으로 머신러닝의 실용성이 강화됐고, 인공지능의 영역이 점점 더 넓게 확장되고 있습니다. 따라서 이제 인공지능은 필요가 아닌 필수로 알아야 하는 학문이 되었습니다. 머신러닝과 딥러닝을 제대로 공부해볼 마음이 생겼다면 을 읽어보세요! 이 책에서는 위에서 살펴본 내용을 더 쉽게, 더 자세하게, 직접 실습하며 배울 수 있습니다. 👀 도서 자세히보기 👩💻 유튜브 무료 강의
혼공족장

파이썬이 처음이거나, 배운 내용이 기억나지 않을 때 가장 필요한 것은 바로 개념 정리 입니다. 스스로 공부하면서 용어 정리를 하는 것이 가장 좋지만, 쉽지 않죠.😥 여러분의 학습을 돕기 위해 파트 별로 파이썬 용어를 정리하였습니다. [ctrl + f] 키로 궁금하신 내용을 검색해보시고, 아래 링크에서 전체 파이썬 용어 정리 PDF 파일 을 다운로드 받아 활용해보세요! 📑 혼공 용어 노트 : [용어 노트]를 클릭하여 PDF를 다운로드 받으세요. ※ 파이썬을 공부하다가 어려운 내용을 만나면 혼공 용어 노트에 추가로 정리해보세요. 2️⃣ 탄: 파이썬 반복문, 함수, 예외처리 용어 정리 3️⃣ 탄: 파이썬 모듈, 클래스 용어 정리 1. 파이썬 시작하기 ✅ 이진 숫자(binary digit): 0과 1로 이루어진 수 ✅ 프로그래밍 언어(programming language): 컴퓨터가 이해할 수 있는 이진 코드로 변환되는 것을 목표로 만들어진, 사람이 쉽게 이해할 수 있는 형태의 언어 대표적인 프로그래밍 언어: 파이썬, C, C#, C++,자바, 루비, 자바스크립트 등 ✅ 소스 코드(source code): 사람들이 쉽게 읽고 이해할 수 있도록 프로그래밍 언어로 작성한 코드. 사람들은 이 코드로 작성하고 읽는 것이 힘들기 때문에 프로그래밍 언어로 소스 코드를 만들고, 이를 컴퓨터가 이해하는 이진 코드로 바꾼다. ✅ 텍스트 에디터(text editor): 글자를 입력할 수 있는 모든 종류의 프로그램. 메모장도 텍스트 에디터이며, 프로그래밍 작성 시 사용할 수는 있으나 최대한 프로그래밍 언어를 쉽게 작성할 수 있도록 도와주는 텍스트 에디터를 사용하면 좋다. 텍스트 에디터의 종류에는 비주얼 스튜디오 코드(Visual Studio Code) 외에 서브라임 텍스트(Sublime Text), 아톰(Atom) 등이 있다. ✅ 통합 개발 환경(IDE: Integrated Development Environment): 텍스트 에디터와 코드 실행기, 이 두 가지를 모두 포함하고 있는 프로그램. 프로젝트 생성, 자동 코드 완성, 디버깅 기능을 제공하는 환경을 말한다. 예) 자바의 eclipse, C언어의 Visual Studio ✅ 개발 환경(development environment ): 컴퓨터, 텍스트 에디터, 파이썬 인터프리터 등과 같이 프로그래밍을 할 수 있는 환경. 텍스트 에디터를 포함해서 컴파일러 버전과 같은 개발 플랫폼을 말한다. 웹 프로그래밍에선 웹 브라우저도 개발 환경이 된다. 개발 환경이 달라지면 프로그램의 작동 결과가 다를 수 있다. ✅ 인터프리터(interpreter): 프로그래밍 소스 코드를 곧바로 실행해 주는 프로그램. 한 번에 코드 한 줄씩 읽어 실행. 파이썬 코드를 실행할 수 있는 도구는 파이썬 인터프리터 ✅ 대화형 셀(interactive shell): 컴퓨터와 상호 작용하는 공간이라는 의미에서 대화형 셸이라고 부른다. 프롬프트라고 불리는 >>>에 코드를 한 줄 한 줄 입력하면 곧바로 실행 결과를 볼 수 있다. ✅ 표현식(expression): 어떠한 값을 만들어 내는 간단한 코드. 값이란 숫자, 수식, 문자열 등을 의미한다. ✅ 문장(statement): 표현식이 하나 이상 모인 것. 파이썬에서는 한 줄이 하나의 문장이 된다. ✅ 키워드(keyword): 의미가 부여된 특별한 단어. 언어 내에서 문법적인 용도로 사용되고 있는 단어. 사용자가 지정하는 이름에는 사용 불가. ✅ 식별자(identifier): 함수나 변수의 이름을 붙일 때 사용하는 단어. 식별자를 만들 때는 특별한 규칙을 따라야 한다. 스테이크 케이스(snake_case): 단어 사이에 _기호를 붙여 만든 식별자 phone_number = '010-1234-5678' 캐멀 케이스(CamelCase): 단어들의 첫 글자를 대문자로 만든 식별자. 클래스 식별자를 만들 때 사용 class WorldMap: pass 파스칼 케이스: 캐멀 케이스 중에서 첫 번째 글자가 대문자인 것 Class Person: pass ✅ 변수(variable): 값을 저장할 때 사용하는 식별자. 이름은 ‘변수’이지만 숫자뿐만 아니라 모든 자료형을 저장할 수 있다. 선언: 변수를 사용하려면 식별자는 무엇이고, 어떤 데이터를 가진다라는 것 을 알려줘야 하는데, 이는 변수를 ‘선언한다’라고 한다. 할당: 변수에 값을 넣는 것을 ‘할당한다’라고 한다 → 메모리에 변수의 값이 들어갈 공간을 할당해야 하므로! 참조: 변수에 접근하는 것을 ‘참조한다’라고 한다 → 결국 변수가 저장된 메모리에 접근하는 것인데, 이 메모리의 '주소'를 창조한다고 생각하면 됩니다! ✅ 함수(function): 코드의 집합. 식별자 뒤에 괄호가 붙어 있으면 해당 식별자는 함수. 함수 호출: 함수를 사용하는 것. 함수를 호출할 때는 괄호 내부에 여러 가지 자료를 넣게 되는데, 이러한 자료를 ‘매개변수’라 하고, 함수를 호출해서 최종적으로 나오는 결과를 ‘리턴값’이라고 한다 함수 선언(정의): 함수가 어떤 매개변수를 받아 어떤 동작을 하고 어떤 값을 반환할지 기술하는 것 ✅ 연산자(operator): 연산에 사용되는 표시나 기호. 연산자 우선순위: 파이썬의 연산자 우선순위는 알고 있는 것처럼 곱셈과 나눗셈이 덧셈과 뺄셈보다 우선하고, 우선순위가 같을 때는 왼쪽에서 오른쪽 순서로, 우선순위를 무시하고 무조건 먼저 연산하고 싶은 게 있다면 괄호로 감싸준다. 연산자 종류: 사칙 연산자, // 연산자, 나머지 연산자, 제곱 연산자, 대입 연산자, 복합 대입 연산자 ✅ 리터럴(literal): 소스 코드 내에서 직접 입력된 값. 자료(data)라고도 한다. * 상수와 리터럴: 사실 리터럴은 상수와 같은 의미지만, 프로그램에서는 상수를 '값을 한 번 저장하면 변경할 수 없는 변수'로 정의하기 때문에 이와 구분하기 위해 '리터럴'이라는 용어를 사용한다. 2. 자료형 ✅ 자료형(data type): 자료의 형태. 자료형에 따라 컴퓨터가 처리하는 방법이 달라진다. 파이썬의 기본 자료형 숫자: 소수점이 없는 정수형과 소수점이 있는 실수형으로 구분. 사칙 연산자(+, -, *, /)와 정수 나누기 연산자(//), 나머지 연산자(%), 제곱 연산자(**) 사용 문자열: 문자의 나열. 큰따옴표 혹은 작은따옴표로 입력. 문자열 연결 연산자(+), 문자열 반복 연산자(*), 문자열 선택 연산자([]), 문자열 범위 선택 연산자([:]) 사용 불: True와 False를 나타내는 값. 반드시 첫 글자는 대문자. ✅ 이스케이프 문자(escape character): \(백슬래시) 기호가 붙은 특수한 문자 리터럴. 문자열 내부에서 특수한 기능을 수행. ✅ 인덱스(index): 리스트, 문자열과 같은 자료형에서 자료가 메모리에 저장된 순서대로 매겨진 번호. 리스트 내부에서 값의 위치를 의미. 제로 인덱스: 숫자를 0부터 세는 인덱스. 파이썬은 제로 인덱스 사용 원 인덱스: 숫자를 1부터 세는 인덱스. ✅ 부동 소수점(loating point): 소수점이 있는 실수 데이터를 저장하는 방식. ‘부동’은 ‘떠다니다’의 의미, 소수점이 떠다닌다는 의미에서 부동 소수점이라고 함. 이 방식에서는 최상위 비트(MSB: Most Significant Bit)를 부호로 결정. 최상위 비트가 0이면 양수, 1이면 음수 ✅ 캐스트(cast): 어떤 자료형을 다른 자료형으로 바꾸는 것. 특히 input() 함수의 입력 자료형은 항상 문자열이기 때문에 입력받은 문자열을 숫자로 변환해야 숫자 연산에 활용 가능. 3. 조건문 ✅ 조건문(conditional statement): 조건에 따라 코드를 실행하거나 실행하지 않게 만들고(실행 흐름을 바꾸고) 싶을 때 사용하는 구문. 실행 흐름을 바꾸는 것 if문: 괄호 내의 조건식이 참이면 블록 내의 문장을 실행 else문: if문의 조건식이 거짓이면 블록 내의 문장을 실행. 필요 없으면 안 써도 됨 else if문: if문의 조건식이 거짓일 때 실행시킬 코드에 추가 조건을 걸고 싶 은 경우에 사용. 마찬가지로 필요 없으면 else if를 사용하지 않아도 됨. ✅ 들여쓰기(indent): 코드 앞에 사용하는 ‘띄어쓰기 4번’, ‘띄어쓰기 2번’, ‘탭’과 같은 것을 의미. 파이썬 개발에서는 일반적으로 ‘띄어쓰기 4번’을 많이 사용 *Tab 키를 누르면 자동으로 띄어쓰기 네 개를 넣어줍니다 . ✅ 비교 연산자(comparison operators): 불을 만드는 연산자. 숫자의 크기 비교나 문자열을 비교 ✅ 논리 연산자(logical operators): 비교 연산자로 만들어진 불끼리 연산할 수 있는 연산자 not: 불을 반대로 전환. True는 False로, False는 True로 and: 피연산자 두 개가 모두 참일 때 True를 출력하며, 나머지의 경우는 모 두 False를 출력 or: 피연산자 두 개 중에 하나만 참이라도 True를 출력하며, 두 개가 모두 거짓일 때만 False를 출력. 지금까지 파이썬의 기본, 자료형, 조건문에서 쓰이는 용어에 대해 알아보았습니다. 의 부록인 ' 혼공 용어 노트 '에서 전체 내용을 확인하실 수 있습니다. 출간 후부터 현재까지 독자의 꾸준한 사랑을 받는 파이썬 기초 도서! 입문자 맞춤형 체계적인 반복 학습과 154개의 예제로 실전 감각을 기를 수 있어 프로그래밍이 처음인 사람부터 신입 개발자까지 보는 도서입니다 :) 📑 혼공 용어 노트 : [용어 노트]를 클릭하여 무료 PDF 다운로드 받으세요. 👀 도서 자세히 보기 👨💻 유튜브 무료 강의 보기
혼공족장

파이썬이 처음이거나, 배운 내용이 기억나지 않을 때 가장 필요한 것은 바로 개념 정리 입니다. 스스로 공부하면서 용어 정리를 하는 것이 가장 좋지만, 쉽지 않죠.😥 여러분의 학습을 돕기 위해 파트 별로 파이썬 용어를 정리하였습니다. [ctrl + f] 키로 궁금하신 내용을 검색해보시고, 아래 링크에서 전체 파이썬 용어 정리 PDF 파일 을 다운로드 받아 활용해보세요! 📑 혼공 용어 노트 : [용어 노트]를 클릭하여 PDF를 다운로드 받으세요. ※ 파이썬을 공부하다가 어려운 내용을 만나면 혼공 용어 노트에 추가로 정리해보세요. 1️⃣ 탄: 파이썬 기초, 자료형, 조건문 용어 정리 3️⃣ 탄: 파이썬 모듈, 클래스 용어 정리 4. 반복문 ✅ 반복문(loop statement): 조건문과 같이 프로그램의 진행을 바꿀 때 사용하는 것. 매우 많은 횟수 또는 무한하게 반복 작업을 하고 싶을 때 사용하는 문법. for문: 반복 횟수가 정해졌거나 변수가 이터러블한 경우에 주로 사용 이 경우 range( ) 함수 사용! while문: 반복 횟수를 모르거나 무한 루프를 만들 때 주로 사용 break문: 반복문, 조건문 블럭을 빠져 나오게 하는 키워드. continue문: 반복문 내에서 continue문을 만나면 아래에 있는 코드를 실 행하지 않고 위로 돌아가 반복문 조건을 검사한 후 반복을 할지 말지를 결정. 주로 조건문 안에 넣어 사용 *리스트와 딕셔너리의 차이점 리스트는 각 요소를 인덱스로 접근하는 반면, 딕셔너리는 인덱스 대신 키를 사용해 요소에 접근한다. ✅ 비파괴적 함수(non destructive function): 원본을 변화시키지 않는 함수. str 자료형의 lower( ), upper( ), split( )등이 있어요! ✅ 파괴적 함수(destructive function): 원본을 변화시키는 함수. list 자료형의 append( ), remove( ), pop( ) 등이 있어요! ✅ 리스트 내포(list comprehension): 반복문의 요소를 삽입할 때, 한 줄로 작성할 수 있도록 제공하는 문법 5. 함수 ✅ 리턴(return): 함수를 실행했던 위치로 돌아가게 하는 것. 리턴값을 가지는 함수는 반드시 리턴할 때 반환하는 값이 있어야 한다. 조기 리턴: 함수 내의 필요한 위치에서 return 키워드를 사용하는 것. ✅ 리턴값(return value): 함수의 실행 결과값. 함수의 최종적인 결과 ✅ 매개변수(parameter): 함수를 호출할 때 필요한 데이터를 외부로부터 받기 위해 사용하는 것. 가변 매개변수: 매개변수를 원하는 만큼 받을 수 있는 함수. 기본 매개변수: 매개변수를 입력하지 않았을 경우 미리 설정한 값이 들어가는 매개변수 ✅ 키워드 매개변수(keyword parameter): 매개변수의 이름을 지정해서 값을 입력하는 매개변수 ✅ 재귀(recursion): 함수 내부에서 자기 자신을 호출하는 것. ✅ 메모화(memoize): 재귀 호출에서 한 번 연산한 값을 중복해서 연산하지 않기 위해 새로운 값을 연산할 때마다 그 결과에 따른 값을 저장하는 것. 저장된 값은 중복 호출될 때마다 가져와서 사용하게 돼요! ✅ 팩토리얼(factorial): n!으로 표현. 1부터 n까지의 숫자를 곱하는 연산. 예) 5! = 5*4*3*2*1=120 ✅ 피보나치 수열(fibonacci numbers): 첫 번째와 두 번째 항이 주어지며, 세 번째 항부터 앞의 두 항을 더한 값을 갖는 수열. ✅ 트리(tree): 비선형 자료 구조의 일종. 노드끼리 연결된 모습이 나무 모양의 구조인 데에서 이름이 유래. 노드: 트리의 각 항목 리프: 자식 노드가 없는 노드 부모 노드: 자신의 바로 위에 연결된 노드 자식 노드: 자신의 바로 아래에 연결된 노드 루트: 해당 트리의 최상위 노드 ✅ 스트림(stream): 프로그램이 외부 파일, 외부 네트워크 등과 통신할 때 데이터가 흐르는 길. 이때 외부는 같은 컴퓨터 내부라도 프로그램의 바깥에 별도로 존재하는 것을 말한다. stream의 의미가 시냇물인 것을 떠올리면 기억하기 쉬워요! ✅ 람다(lambda): 간단한 함수를 쉽게 구현할 수 있는 기능. 람다 대수를 지원하는 프로그래밍 문법. ✅ 튜플(tuple): 리스트와 비슷한 자료형이나 리스트와 다르게 한번 결정된 요소를 바꿀 수 없다. ✅ with 구문(with statement): 프로그램이 길어지면 open() 함수와 close() 함수 사이에 많은 코드가 들어가기 때문에 파일을 열고 닫지 않는 실수를 하는 경우가 생길 수 있다. 이런 경우 with 구문을 사용하면 with 구문이 종료될 때 자동으로 파일이 닫힌다. 6. 예외 ✅ 구문 오류(syntax error): 프로그램 실행 전에 발생하는 오류. 구문 오류가 있으면 프로그램 자체가 실행이 되지 않는다. ✅ 예외(exception): 런타임 오류(runtime error). 프로그램 실행 중에 발생하는 오류를 의미. try-except 구문으로 처리 가능 . ✅ 예외 처리 (exception handling): 예외가 발생하지 않게 미리 예외가 발생할 수 있는 부분에 안전 장치를 설치하는 것. 예외를 처리하는 방법 조건문 사용: 조건문 등을 사용해 예외를 처리하는 기본적인 방법. try 구문 사용: 예외 처리에 특화된 구문. ✅ 예외 객체 (exception object): 예외가 발생했을 때 예외에 관련된 정보가 저장되는 객체. 지금까지 파이썬의 반복문, 함수, 예외처리에서 쓰이는 용어에 대해 알아보았습니다. 의 부록인 ' 혼공 용어 노트 '에서 전체 내용을 확인하실 수 있습니다. 출간 후부터 현재까지 독자의 꾸준한 사랑을 받는 파이썬 기초 도서! 입문자 맞춤형 체계적인 반복 학습과 154개의 예제로 실전 감각을 기를 수 있어 프로그래밍이 처음인 사람부터 신입 개발자까지 보는 도서입니다 :) 📑 혼공 용어 노트 : [용어 노트]를 클릭하여 무료 PDF 다운로드 받으세요. 👀 도서 자세히 보기 👨💻 유튜브 무료 강의 보기
혼공족장

파이썬이 처음이거나, 배운 내용이 기억나지 않을 때 가장 필요한 것은 바로 개념 정리 입니다. 스스로 공부하면서 용어 정리를 하는 것이 가장 좋지만, 쉽지 않죠.😥 여러분의 학습을 돕기 위해 파트 별로 파이썬 용어를 정리하였습니다. [ctrl + f] 키로 궁금하신 내용을 검색해보시고, 아래 링크에서 전체 파이썬 용어 정리 PDF 파일 을 다운로드 받아 활용해보세요! 📑 혼공 용어 노트 : [용어 노트]를 클릭하여 PDF를 다운로드 받으세요. ※ 파이썬을 공부하다가 어려운 내용을 만나면 혼공 용어 노트에 추가로 정리해보세요. 1️⃣ 탄: 파이썬 기초, 자료형, 조건문 용어 정리 2️⃣ 탄: 파이썬 반복문, 함수, 예외처리 용어 정리 7. 모듈 ✅ 유닉스 타임(unix time): 세계 표준시(UTC)로 1970년 1월 1일 0시 0분 0초를 기준으로 몇 초가 지났는지를 정수로 나타낸 것. ✅ 모듈(module): 코드를 분리하고 공유할 수 있도록 만들어 주는 문법. 표준 모듈: 파이썬에 기본적으로 내장되어 있는 모듈 외부 모듈: 다른 사람이 만들어서 공개한 모듈. ✅ 패키지 관리 시스템(Package Management System): 파이썬의 외부 모듈을 설치할 때 사용하는 프로그램. pip(Python Package Index)를 일컬음. ✅ 엔트리 포인트(entry point): 메인(main)이라고도 하며, 프로그래밍 언어에서 프로그램의 진입점을 이르는 말 ✅ URL(Uniform Resource Locator): 네트워크의 자원이 어디에 위치하는지 확인할 때 사용하는 것. ✅ 인코딩(encoding): 특정한 방식을 기반으로 어떤 형식을 다른 형식으로 대응시키는 것. ✅ 디코딩(decoding): 인코딩된 데이터를 반대로 돌리는 것. ✅ 라이브러리(library): 개발자가 모듈의 함수를 실행하여 사용하는 것. 정상적인 제어를 하는 모듈. ✅ 프레임워크(framework): 모듈이 개발자의 함수를 실행하여 사용하는 것. →제어 역전이 발생하는 모듈! ✅ 제어 역전(IoC: Inversion of Control): 개발자가 모듈의 함수를 호출하는 것이 일반적인 제어 흐름인데, 이와 반대로 개발자가 만든 함수를 모듈이 실행하는 것. ✅ 텍스트 데이터(text data): 내부적으로는 앞에서 언급한 이진수로 저장되지만, 우리가 쉽게 읽을 수 있는 텍스트로 변환될 수 있는 이진수 데이터. ✅ 바이너리 데이터(binary data): 텍스트 에디터로 열었을 때 의미를 이해할 수 없으며, 전용 에디터를 사용해서만 편집할 수 있는 데이터. 이미지와 동영상이 바이너리 데이터에 해당돼요! 8. 클래스 ✅ 객체 지향 프로그래밍(OOP: Object Oriented Programming): 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법. 객체 지향 프로그래밍의 특징: 상속, 다형성, 캡슐화 ✅ 상속(inheritance): 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성하는 관계를 말한다. 상위 객체는 자기가 가지고 있는 변수와 함수를 하위 객체에게 물려주어 하위 객체가 사용할 수 있도록 한다. 부모(parent class, super class, 상위 클래스): 해당 클래스에 선언된 변수와 함수를 물려주는 클래스. 자식(child class, sub class, 하위 클래스): 다른 클래스로부터 물려받고자 하는 클래스. 게임 캐릭터를 만들 때, 캐릭터 이름과 같은 속성은 모든 캐릭터가 같지만 각각의 직업은 다르기 때문에 다른 스킬을 사용한다. 이 때 공통된 속성을 갖는 클래스를 상속받아 스킬만 다르게 구현할 수 있다. ✅ 클래스(class): 객체에 포함할 변수와 함수를 미리 정의한 것. 객체의 설계도에 해당. ✅ 추상화(abstraction): 프로그램에서 필요한 요소만을 사용해서 객체를 표현하는 것. 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 의미. ✅ 객체(object): 여러 가지 속성을 가질 수 있는 대상 ✅ 인스턴스(instance): 클래스 기반으로 만들어진 객체 ✅ 생성자(constructor): 클래스 이름과 같은 함수. 클래스 내부에 __init__이라는 함수를 만들면 객체를 생성할 때 처리를 작성할 수 있다. ✅ 소멸자(destructor): 인스턴스가 소멸될 때 호출되는 함수. ✅ 매소드(method): 클래스가 가지고 있는 함수. →멤버 함수, 인스턴스 함수 ✅ 프라이빗 함수(private variable): 캡슐화를 위해 만들어진 문법. 파이썬은 클래스 내부의 변수가 외부에서 사용하는 것을 막고 싶을 때, 인스턴스 변수 이름을 __ 형태로 선언한다. ✅ 가비지 컬렉터(garbage collector): 더 이상 사용할 가능성이 없는 데이터를 메모리에서 제거하는 프로그램 ✅ 오버라이드(override): 부모에게서 상속받은 메소드를 자식 클래스에서 다시 정의하는 것 지금까지 파이썬의 반복문, 함수, 예외처리에서 쓰이는 용어에 대해 알아보았습니다. 의 부록인 ' 혼공 용어 노트 '에서 전체 내용을 확인하실 수 있습니다. 출간 후부터 현재까지 독자의 꾸준한 사랑을 받는 파이썬 기초 도서! 입문자 맞춤형 체계적인 반복 학습과 154개의 예제로 실전 감각을 기를 수 있어 프로그래밍이 처음인 사람부터 신입 개발자까지 보는 도서입니다 :) 📑 혼공 용어 노트 : [용어 노트]를 클릭하여 무료 PDF 다운로드 받으세요. 👀 도서 자세히 보기 👨💻 유튜브 무료 강의 보기
혼공족장

머신러닝, 딥러닝으로 복잡한 문제를 해결하고 정교한 작업을 수행하기 위해 다양한 오픈소스 프레임워크가 공개되어 있습니다. 프레임워크(Framework)란 응용 프로그램을 개발하기 위한 여러 라이브러리나 모듈 등을 효율적으로 사용할 수 있도록 하나로 묶어 놓은 일종의 패키지를 말합니다. 현재 소개된 딥러닝 프레임워크들은 각각 다른 목적으로 제작되었으며, 각각의 고유한 기능과 특성을 제공합니다. 이중 유명한 딥러닝 프레임워크 3가지를 소개합니다. 1. 텐서플로(TensorFlow) 텐서플로는 구글이 개발한 오픈소스 소프트웨어 라이브러리이며 머신러닝과 딥러닝을 쉽게 사용할 수 있도록 다양한 기능을 제공합니다. 텐서플로는 데이터 플로우 그래프(Data Flow Graph) 구조를 사용하는 특징이 있습니다. 이는 수학 계산식과 데이터의 흐름을 노드(Node)와 엣지(Edge)를 사용한 방향성 그래프로 표현하는 방식입니다. 각 노드 사이의 연결이나 다차원 배열 등을 의미하는 텐서 사이의 연결 관계를 풍부하게 표현할 수 있으며, 텐서보드 시각화 도구 모음을 사용하면 웹 기반의 대화형 대시보드에서 그래프 실행 방법에 대한 검사나 프로파일링도 가능합니다. 😁장점 텐서플로는 주로 이미지 인식이나 반복 신경망 구성, 기계 번역, 필기 숫자 판별 등을 위한 각종 신경망 학습에 사용합니다. 특히 대규모 예측 모델 구성에 뛰어나 테스트부터 실제 서비스까지 사실상 거의 모든 딥러닝 프로젝트에서 범용적으로 활용할 수 있습니다. 무엇보다 구글에서 전폭적으로 지원하고 있기 때문에 지속적인 성능 개선과 지원에서 타 프레임워크보다 빠르고 안정적이란 부분이 강점입니다. 이 밖에도 추상화 수준이 높아 텐서플로를 활용하면 개발자는 알고리즘의 세세한 구현보다 전체적인 논리 자체에 더 집중할 수 있게 되며 확장성 또한 뛰어납니다. 🤔단점 딥러닝 모델을 만드는 데 기초 레벨부터 직접 작업해야 하기 때문에 초보자가 사용하기 어려울 수 있습니다. 2. 케라스(Keras) 텐서플로의 문제를 해결하기 위해 보다 단순화된 인터페이스를 제공하는 케라스가 개발되었습니다. 케라스의 핵심적인 데이터 구조는 모델입니다. 케라스에서 제공하는 시퀀스 모델로 원하는 레이어를 쉽게 순차적으로 쌓을 수 있으며, 다중 출력 등 더 복잡한 모델을 구성할 때는 케라스 함수 API를 사용하여 쉽게 구성할 수 있습니다. 이처럼 케라스는 딥러닝 초급자도 각자 분야에서 손쉽게 딥러닝 모델을 개발하고 활용할 수 있도록 직관적인 API를 제공합니다. 😁장점 케라스는 일반 사용 사례에 최적화된 간단하고 일관된 인터페이스를 제공합니다. 사용자 오류에 대해 명확하고 실용적인 피드백을 제공합니다. 또한 케라스의 구성 요소는 모듈 형태로, 각 모듈이 독립성을 갖기 때문에 새로운 모델을 만들 때 각 모듈을 조합해 쉽게 새로운 모델을 만들 수 있습니다. 🤔단점 모듈화의 한계로 복잡한 프로젝트에 구현 범위가 다소 좁은 편입니다. 또한 케라스는 다양한 백엔드 위에서 동작하기 때문에 어떤 오류가 발생했을 때 케라스 자체의 문제인지, 백엔드 언어의 문제인지 특정하기 어려운 단점이 있습니다. 3. 파이토치(Pytorch) 토치(Torch)는 페이스북의 AI 연구 팀이 개발한 파이썬 기반 오픈소스 머신러닝 라이브러리입니다. 파이토치는 토치(Torch)라는 머신 러닝 라이브러리에 바탕을 두고 만들어졌습니다. 파이토치는 텐서플로와 다르게 절차가 간단하고 그래프가 동적으로 변화할 수 있으며 코드 자체도 파이썬과 유사해 진입 장벽이 낮은 편입니다. 😁장점 그래프를 만들면서 동시에 값을 할당하는 Define by run 방식으로 코드를 깔끔하고 직관적으로 작성할 수 있습니다. 또한 학습 속도도 텐서플로보다 빠릅니다. 텐서플로가 유기적을 신경망을 만들 수 없어 성능의 한계를 가지고 있는 반면, 파이토치는 메모리에서 연산을 하면서도 신경망 사이즈를 최적으로 바꾸면서 동작시킬 수 있습니다. 파이토치는 Numpy를 대체하면서도 GPU를 이용한 연산이 가능하며 유연하고 빠르기 때문에 최근 딥러닝 관련 논문에서는 텐서플로보다 파이토치를 선호하는 추세입니다. 🤔단점 텐서플로에 비해 사용자층이 낮고 학습에 필요한 자료와 예제를 구하기 쉽지 않습니다. 🤓딥러닝 프레임워크 한 눈에 보기! 😁장점 🤔단점 텐서플로(TensorFlow) 텐서보드(TensorBoard)를 통해서 파라미터 변화 양상이나 DNN의 구조를 알 수 있음 메모리를 효율적으로 사용하지 못함 케라스(Keras) 배우기 쉽고 모델을 구축하기 쉬움 오류가 발생할 경우 케라스 자체의 문제인지 backend의 문제인지 알 수 없음 파이토치(Pytorch) 간단하고 직관적으로 학습 가능 속도 대비 빠른 최적화가 가능 텐서플로우에 비해 사용자층이 얕음 예제 및 자료를 구하기 힘듦 지난 시간 📎 머신러닝 딥러닝 알고리즘 에 이어, 딥러닝 프레임워크에 대해 알아보았습니다. 딥러닝의 등장으로 머신러닝의 실용성이 강화됐고, 인공지능의 영역이 점점 더 넓게 확장되고 있습니다. 따라서 이제 인공지능은 필요가 아닌 필수로 알아야 하는 학문이 되었습니다. 머신러닝과 딥러닝을 제대로 공부해볼 마음이 생겼다면 을 읽어보세요! 이 책에서는 위에서 살펴본 내용을 더 쉽게, 더 자세하게, 직접 실습하며 배울 수 있습니다. 👀 도서 자세히보기 👨💻 유튜브 무료 강의
혼공족장
