목록프로그래밍 강의 (43)
컴굥일지
1. Numpy - numerical python의 줄임말로 '숫자와 관련한 파이썬 도구'이다. - 파이썬이 수학적 계산을 좀 더 잘할 수 있게 도와준다. - numpy는 numpy array(python의 list같은 개념)를 제공해 준다. 여러 값들을 매우 효율적으로 다룰 수 있게 구현되어 있다. 2. Numpy array 기본 #numpy모듈의 array함수를 사용함. 이때 파이썬 리스트를 매개변수로 넘겨줌 array1=numpy.array([2,3,5,7,11,13,17,19,23,29,31]) array1.shape # => (11,) array2=numpy.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) array2.shape# => (3,4) 즉, 3행 4열인 2차..

Help -> User Interface Tour - 주피터에 어떤 기능들이 있는지 튜토리얼 해준다. Help -> Keyboard Shortcuts - 주피터 노트북에서 사용할 수 있는 단축키가 나온다. 기본적인 내용 - Untitled 부분을 눌러 파일 이름을 바꿀 수 있다. - [ File Edit View Insert Cell Kernel Widgets Help ] 가 있는 부분이 메뉴바(Menubar)이며, 그 밑의 줄이 툴바(Toolbar)이다. - 사진의 In [ ]: 으로 보이는 부분을 셀(cell)이라고 부르는데, 저 부분이 파란색일 때에는 커맨드 모드, 초록색일 때는 에딧 모드이다. - 커맨드 모드: 키보드 단축기를 사용하여 노트북 전반을 컨트롤할 수 있다. (셀 실행, 삭제, 복사 등..

아나콘다(Anaconda)는 설치를 쉽게 도와주는 도구입니다. 이를 활용하면, python 3와 Jupyter Notebook 등을 쉽게 설치할 수 있을 뿐 아니라, 각종 라이브러리도 쉽게 설치할 수 있습니다. Mac에서는 잘 안 되기도 한다니까 Mac유저들은 명령 프롬프트에서 명령어 입력하는 방식(pip으로 설치)으로 해야 할 거 같네요. 먼저 사이트로 가서 다운로드 버튼을 눌러 다운 받기 파일을 실행하면 이런 창이 뜨는데 Next 버튼 누르기 I Agree 선택 Next 선택 아나콘다가 설치될 경로를 정해주고 Next 버튼 누르기 Add Anaconda to my PATH environment variable을 체크하지 않으면 윈도우에서 시작 메뉴 아이콘을 클릭하는 방법으로만 Anaconda Navi..

1. 데이터 사이언스 - 데이터 과학이란, 다양한 데이터로부터 지식과 인사이트를 추출하는 분야이다. - 데이터 사이언스는 데이터와 연관된 모든 것을 의미한다. - 데이터 사이언스에 필요한 역량은 프로그래밍, 수학과 통계, 그리고 특정 분야에 대한 전문성이다. * 사람들이 하는 흔한 오해 * 1. 데이터 사이언스에서 가장 중요한 건 인공지능, 딥러닝이다. => X - 인공지능 밑의 과정 또한 매우 중요하다. 인공지능은 할 수 있으면 좋지만 그 밑의 과정만으로도 유의미한 결과를 낼 수 있다. 2. 데이터 사이언티스트들은 왠지 하루 종일 컴퓨터랑 수학만 하는 사람일 것 같다. => X - 수학과 통계가 모두 중요하기는 하다. 그러나 가장 중요한 것은 아니다. - 데이터 사이언스의 목표는 세상에 가치를 더할 수..

1. 플랫폼 - 프로그램이 실행되는 하드웨어, 소프트웨어 환경 - 각 플랫폼에 맞게 프로그램을 만들어야 한다. 종류가 맞지 않으면 실행이 되지 않는다. ex) 프로그램 설치 시 윈도우 용/Mac 용으로 나누어져 있음. CPU마다 머신 코드의 문법이 다름. - 프로그램이 실행될 때 플랫폼에 영향을 받게 된다. => 플랫폼 의존성 Platform dependency - 그렇기 때문에 플랫폼의 종류가 많아질수록 다양한 버전의 프로그램을 만들어야 한다. => 플랫폼 파편화 => 매우 번거롭기 때문에 크로스 플랫폼이 등장함. 2. 크로스 플랫폼 - 여러 OS, CPU 등에서 동일하게 실행할 수 있는 환경을 의미한다. - 다양한 컴퓨터 위에 가상의 컴퓨터를 두어, 동일한 프로그램이 돌아가는 것처럼 느껴지게 하는 것..
1. 운영체제 ex) Windows 10, Mac OS, Linux / Android, iOS 등 - 애플리케이션과 하드웨어가 잘 작동하도록 도와주는 역할이다. - 컴퓨터나 휴대폰을 켜면 자동으로 운영체제가 실행된다. - 운영체제를 용도로 나누어보면 크게 "데스크톱/랩톱", "모바일", "서버", "임베디드"로 나눌 수 있다. 1) 입력과 출력 - 입력(키보드, 마우스,마이크,카메라)된 것을 제대로 출력(모니터, 스피커) 하기 위해 운영체제가 필요하다. 입출력 기기들의 종류는 매우 다양하고 연결 방식도 다양하기 때문에, 애플리케이션을 만드는 사람들이 이 장치들을 모두 고려하기는 매우 어렵다. 그렇기 때문에 중간에 운영체제가 여러 가지 제조사, 연결 방식 등을 고려하여 정리한 다음에 신호를 애플리케이션에 ..
1. 컴파일러와 인터프리터 - High-level 프로그래밍 언어로 작성된 코드를 기계가 이해할 수 있게 기계어로 바꾸어주는 소프트웨어이다. - 프로그래밍 코드를 실제로 동작하는 프로그램, 즉 애플리케이션으로 바꿔준다. 1) 컴파일러 - 프로그램 전체를 한 번에 번역한 후, 완성된 머신 코드를 내놓는다. - 컴파일러가 변환한 머신코드를 사용자에게 보내주면, 사용자는 기계어를 실행해서 프로그램을 작동시킨다. => 머신코드가 고수준 언어보다 길이가 길기 때문에 파일의 크기가 커진다. - 기계어는 사람이 이해할 수 없기 때문에, 기계어 중에서 원하는 부분만 수정할 수 없다. => High-level로 작성된 코드에서 수정을 한 뒤에 다시 컴파일을 시켜야 하는 단점이 있다. 즉, 개발자 입장에서 빠르게 개발할 ..
1. 소프트웨어 공학 - 소프트웨어로 제품 또는 서비스를 만드는 방법에 대한 학문 - 어떤 제품/서비스를 기획, 개발, 테스트, 출시, 배포, 유지/보수하는 프로세스를 포함한다. - 제품/서비스를 개발하기 위해서는 다양한 분야의 사람들이 협업을 해야 하는데 이때 사용되는 협업 방식으로 폭포수 방식과 애자일 방식이 있다. 2. 폭포수 방식 VS 애자일 방식 1) 폭포수(Waterfall) 방식 - 각 단계를 완료하고 다음 단계로 넘어가는 방식으로, 예전부터 사용되는 고전적인 방식이다. - 단순하고 직관적이지만, 복잡한 프로젝트의 경우 각 단계를 한번에 완벽히 끝내기가 어렵다는 단점이 있다. - 수정 사항이 많이 생길 가능성이 높은데, 개발자들이 수정 사항을 반영하기 힘들 수도 있다. - 각 단계가 복잡하지..
1. 라이브러리 - 자주 쓰일법한 코드를 모아둔 것으로, 내가 필요한 코드를 가져와서 내 코드에 붙이는 방식이다. - 모든 언어에 동일한 기능을 하는 라이브러리가 있는 것이 아니다. 언어마다 맞는 라이브러리가 존재한다. => 언어를 선택하는 기준이 되기도 한다. 2. 프레임워크 - 프로그래밍의 뼈대가 이미 준비되어 있고, 일부 비어있는 곳만 내가 채우면 되는 방식이다. - 적은 양의 코드로 프로그램을 만들 수 있게 해 준다는 점에서 라이브러리와 유사하다. - 큰 틀이 정해져 있고, 세부 내용만 바뀌는 프로그램에 사용하기 좋다. - 내가 미처 생각하지 못한 부분(ex 보안, 암호화 등)에 대한 코드가 이미 포함되어 있다. - 이미 구조가 만들어져 있기 때문에, 큰 틀을 바꾸는 것은 어렵다.
자세한 언어 => 체계적인 언어 => 쉬운 언어 1. 자세한 언어 - 컴퓨터와 칩의 성능이 좋지 않던 시기에 발전한 언어로, Low-level에 가까운 어셈블리 언어와 C언어 등이 있다. - 아직 객체 지향의 개념이 나타나지 않았으며, 코드 작성 시 컴퓨터적 구조를 모두 고려해주어야 한다. - 컴퓨터가 이해하기 쉽게 작성해야 하기 때문에 사람이 작성하기는 어렵지만, 컴퓨터가 실행하기에 쉽다 - 프로그램의 실행 속도가 빠르고, 대체적으로 객체 지향 언어보다 저장 공간의 낭비가 적어 => 실시간이 보장되어야하는 서비스와 임베디드 시스템 등 처리 속도와 알고리즘이 중요한 분야에 주로 사용된다. 2. 체계적인 언어 - 협업과 생산성을 위해 객체 지향 개념을 도입한 언어로 JAVA, C++ 등이 있다. - 여러 ..