Software Engineering
- A discipline of developing software, which includes set of tools and practices for programmers.
- Coined by Margaret Hamilton, who helped NASA prevent serious problems during the Apollo 11 mission to the moon.
OOP
- For big programs, package functions into hierarchies, pulling related code together into objects.
- Objects can contain other objects, functions and variables.
- Object Oriendted Programming - the idea of packing up functional units into nested objects.
- Hide complexity by encapsulating low-level details in higher-order components.
- Breaking up a big program into functional units is good for cooperating with many teams.
API
- To look into and use other's code, we need a good documentation of what each function in the code does, and a well-defined Application Programming Interface(API) - way that collaborating programmers interact across various parts of the code.
- API allows right people to acces the right functions and data - OOP do this by letting you specity whether functions are public or private.
- Private functions - only functions inside that object can call it. (vs public functions, functions outside can call it)
The ability to hide complexity and selectively reveal is the essence of OOP, and it's a powerful and popular way to tackle building large and complex programs.
- OOP languages - C, C++, C#, Java, Python...
IDE
Integrated Development Environment - a program which integrates many useful tools for writing, organizing, compiling and testing code. ex) eclip se for Java language.
Documenting code
- Can be done in standalone file called "read-me's", which tell other programmers to read that help file before diving in, or use comments(
/**/
).
- Good documentation helps programmers when they revisit code they haven't seen for awhile, but it's also crucial for programmers who are totally new to it.
- Documentation also promotes code reuse - instead of writing same programs over and over, programmers can track down someone else's code that does what they need.
Source control (version control, revision control)
- For big software companies, code for project is stored on centralized servers, called a code repository.
- To work on the code, check out the code, update, and commit the code.
Debugging and testing
- Quality Assurance testing (QA) - elicit bugs.
- Beta version - mostly complete but not fully tested. Opened to public for testing (free QA!).
- Alpha version - usually very rough and buggy, only tested internally.
Vocabulary
- where it's at - 인기(it) 가 있는 곳.
- reiterate - say something again to emphasize
- unforeseen - unexpected
- trip up - make a mistake
- elicit - evoke
Thoughts
- API 를 이렇게 쉽게 설명해주다니, 정말 대단하다. 나도 대충 뭔지는 알고있어도 말로 설명하기는 어려웠는데, 이번 기회에 확실히 알고 간다.
- API 는 프로그래머가 다양한 코드들 사이에서 교류하는 방식을 말한다. API는 접근 권한을 가진 사람이 필요한 함수와 데이터에 접근하게 해준다.
- C++때 배웠던 OOP 특징 - 캡슐화(class), 은닉성(private), 상속, 추상화, 다형성.