어떤 컴퓨터 과학 개념을 알아야합니까? [닫은]


95

컴퓨터 과학의 어떤 개념이 당신을 더 나은 프로그래머로 만들었 을까요?

제 학위는 기계 공학을 전공했기 때문에 결국 프로그래머가 되었기 때문에 기초가 조금 부족합니다. 제가 최근에 배운 몇 가지 표준 CS 개념이 있는데 특히 제가하고있는 일에 대해 훨씬 더 깊이 이해하게되었습니다.

언어 특징

  • 포인터 및 재귀 (Joel에게 감사합니다!)

데이터 구조

  • 링크 된 목록
  • 해시 테이블

알고리즘

  • 버블 정렬

분명히 목록은 현재 약간 짧기 때문에 다음과 같은 제안을 기대했습니다.

  1. 내가 이해해야하는 개념,
  2. 그것들을 적절하게 이해하기위한 모든 좋은 자료들 (위키 백과는 때때로 약간 조밀하고 학문적 일 수 있기 때문에).

5
버블 정렬? 가능한 한 멀리 떨어져 있으십시오! 오히려 quicksort / heapsort가 어떻게 작동하는지 배우십시오.
Carra

18
예 거품 정렬을 배웁니다. 그 끔찍한 이유를 알아보십시오. quicksort, mergesort 및 개별 약점을 포함하여 나머지 모든 것을 배우십시오. 그러나 프로덕션 코드로 작성하지 마십시오. 어떤 플랫폼에서든 제공되는 정렬 함수를 호출하십시오.
Brian Ensink

@Roger Pate-+1, 알고리즘 또는 데이터 구조가 무엇에 좋은지, 무엇을 짜증나게하는지 알아야합니다. Quicksort와 Bubblesort는 모두 최악의 경우 성능 [O (n ^ 2)]이 같지만 매우 다른 종류의 입력에 대해 Bubblesort는 O (n)의 최상의 경우 성능을 가지며 QS는 여전히 O (n log n)입니다. 물론 Bubblesort를 고려하고 있다면 대신 Insertion 정렬을 사용하는 것이 좋습니다.
Andre Artus

답변:


60

Steve Yegge (이전의 Amazon, 현재는 Google)의 블로그 게시물을 살펴보십시오.

개발자가 알아야 할 가장 중요한 5 가지 개념에 대해 자세히 설명합니다.

  1. 기본 프로그래밍 (재귀, 파일 I / O, 형식화 된 출력, 루프 등 포함)
  2. 객체 지향 디자인 (디자인 패턴 등 포함). 감각적 인 OO 디자인을 제작하고 개념을 이해할 수 있어야합니다.
  3. 스크립팅 및 정규식.
  4. 데이터 구조 (목록, 집합, 해시 테이블, 트리, 그래프 등)와 Big O 표기법 및 알고리즘 복잡성.
  5. 비트, 바이트 및 이진수-컴퓨터 내에서 숫자가 표현되는 방식 및 조작 방법.

좋은 링크. 유닉스 측면에 약간 초점을 맞추었지만 (.NET이 완전히 누락 됨) 여전히 좋습니다.
Toon Krijthe 2009

훌륭한 링크-제가 작업 할 수있는 내용이 많이 있습니다. 이러한 사항을 설명하는 좋은 페이지에 대한 링크가 있었으면합니다.
Jon Artus

이 링크는 저를 확인하고 기본 사항을 파악하는 데 매우 유용합니다. 감사합니다 ..
rpr

동의합니다. 훌륭한 링크입니다. 확인 된 가능한 솔루션의 대부분은 Unix 기반이지만 관련된 전체 개념은 언어 / 플랫폼에 구애받지 않습니다. 대부분의 프로그래머에게 재귀, 트리와 같은 ADT 작성 및 비트 연산과 같은 것은 매우 드물지만 중요한 기반입니다.
Zach Burlingame

4
나는 정규식을 제외한 모든 것에 동의합니다. 그것들은 좋은 보너스이지만, 대부분의 것들은 기초 수준의 기초이며, 모든 것이 구축되는 기초입니다 ... 정규식은 훌륭하지만, 나는 그것을 사용하지도 않고 필요하지도 않는 훌륭한 프로그래머를 많이 알고 있습니다.
Beska 2009

35

알고리즘 의 Big-O 표기법과 Big-O 추정을 확실히 이해해야합니다. 알고리즘의 정의, 사용 방법, 중요한 이유, Big-O 추정치가 주어진 두 알고리즘을 비교하는 방법, Big-O 추정을 구축하는 방법 간단한 알고리즘을 위해.


1
내가 링크 한 Wikipedia 기사로 시작할 수 있습니다. 이것은 매우 간단하고 수학적으로 정확합니다.
sharptooth

3
당신은 고급 수학에 대해 상당히 낮은 의견을 가지고있을 것입니다. 나는 대학 1 학년 때 미적분학을 일부만 공부했을 때 이것을 이해했습니다.
GoatRider 2009

1
NP의 개념을 잊지 말고 그 안에 문제가있을 때 검색 목적으로 TSP (Travelling Salesman)를 각 데이터베이스 트랜잭션에 코딩하려고하는 개발자 또는 다른 바보가 큰 문제입니다 =]
Ed 제임스

2
또한 big O는 어떤 알고리즘이 시간이 더 적게 걸리는지 알려주지 않는다는 것을 알아야합니다. 대부분의 CS 졸업생들이 이해하지 못하는 것
Martin Beckett

3
그렇습니다. 입력 세트에 따라 달라지는 것이 아니라 반드시 '빠른'것이 아니라 최악의 경우가 가장 좋은 경우를 알려줍니다.
Ed James

30

나는 당신이 컴퓨터 과학 과목을 찾고 있다는 것이 조금 웃기지 만 위키피디아가 너무 학문적이라고 생각합니다 : D

어쨌든, 여기에 특별한 순서는 없습니다.


2
+1. 데이터베이스를 언급했기 때문에 이러한 유형의 목록에서 종종 간과되었지만 잘 다듬어 진 CS 졸업생이 알아야 할 매우 중요한 개념입니다.
Brian Ensink

14

내 개발에 도움이 된 몇 가지 개념 (지능 및 코드) :

  • Lexing, Parsing, String matching, Regex
  • 메모 화
    • 캡슐화 / 범위 지정 / 폐쇄
    • 캐싱
  • 재귀
  • 반복기 / 생성기
  • 함수형 프로그래밍-John Hughes의 놀라운 기사 는 "왜"에 대해 설명했습니다.

이것들은 이산 수학의 전체 영역이지만 CS를 위해서는 진지한 소개가 필요합니다.

  • 행렬 / 선형 대수
  • 그래프 이론

하지만 마크 제이슨 - 도미 누스 강연 및 기사는 종종 펄 해커로 보내집니다, 나는 어떤 프로그래머가 특히 자신의 명확한 발표 및 실제 코드, 혜택을 누릴 것이라고 생각 높은 주문 펄 .


10

요즘에는 매일 사용할 필요가 없더라도 객체 지향 프로그래밍에 대한 이해가 필수라고 말하고 싶습니다.

이것으로부터 나는 또한 가장 일반적인 패턴을 이해하는 것도 도움이 될 수 있다고 말할 것입니다.


10

몇 가지 좋은 CS 개념이 확인되었지만 수학에 대한 이야기는 거의 없습니다.

나는 당신이 이산 수학 을 살펴볼 것을 제안합니다 . 코드에서 조건을 작성하는 데 도움이되는 논리적 증명으로 시작하는 다양한 유용한 문제가 있습니다. 그래프 이론과 조합은 복잡한 문제 해결 및 알고리즘 최적화에도 도움이됩니다.

우리가 수학을 공부하는 동안 선형 대수는 일반적으로 고급 컴퓨터 그래픽 클래스의 전제 조건입니다.


1
하나만 선택해야한다면 이산 수학이 될 것입니다. 그것은 거의 CS 101입니다. DM이 어떤 식 으로든 건드리지 않는 일반적인 프로그래밍의 영역이나 패러다임을 생각하기가 어렵습니다.
Andre Artus

7

프로그래머 역량 매트릭스 는이를 자세히 다루었지만 몇 가지를 강조하겠습니다.

  • 데이터 구조
    • B- 트리, 이항 및 피보나치 힙, AVL / 레드 블랙 트리, 스플레이 트리, 스킵 목록, 시도 등과 같은 고급 데이터 구조
  • 알고리즘
    • 트리, 그래프, 단순한 욕심쟁이 및 나누기 및 정복 알고리즘은이 매트릭스 수준의 관련성을 이해할 수 있습니다.
  • 시스템 프로그래밍
    • 전체 프로그래밍 스택, 하드웨어 (CPU + 메모리 + 캐시 + 인터럽트 + 마이크로 코드), 이진 코드, 어셈블리, 정적 및 동적 연결, 컴파일, 해석, JIT 컴파일, 가비지 수집, 힙, 스택, 메모리 주소 지정…
  • 소스 코드 버전 관리
    • 분산 된 VCS 시스템에 대한 지식. Bzr / Mercurial / Darcs / Git을 사용해 보았습니다.
  • 빌드 자동화
    • 스크립트를 설정하여 시스템 및 설명서, 설치 프로그램을 빌드하고 릴리스 정보를 생성하고 소스 제어에서 코드에 태그를 지정할 수 있습니다.
  • 자동화 된 테스트
    • 자동화 된 기능,로드 / 성능 및 UI 테스트를 이해하고 설정할 수 있습니다.
  • 문제 분해
    • 적절한 데이터 구조 및 알고리즘을 사용하고 변경 될 수있는 문제의 측면을 캡슐화하는 일반 / 객체 지향 코드를 제공합니다.
  • 시스템 분해
    • 여러 제품 라인 및 외부 시스템과의 통합으로 복잡한 시스템을 시각화하고 설계 할 수 있습니다. 또한 모니터링,보고, 장애 조치 등과 같은 운영 지원 시스템을 설계 할 수 있어야합니다.

5

깊이 우선, 호흡 우선 검색, 최단 경로 등과 같은 그래프와 일부 응용 알고리즘이 매우 유용하다는 것을 알았습니다. 객체 방향도 정말 일반적인 개념입니다.


4

규칙 1 : 소프트웨어는 지식 캡처 입니다. 소프트웨어는 무언가를 의미합니다. 의미가 명확하지 않은 경우 사용자가하는 일을 이해하기 위해 사용자와 이야기하는 데 더 많은 시간을 할애하십시오.

알고리즘과 데이터 구조는 동일한 동전의 양면입니다. 알고리즘은 데이터 구조에 따라 다르며 데이터 구조는 알고리즘에 따라 다릅니다.

가능한 한 빨리 버블 정렬을 해제하십시오. 진지하게. 모든 최신 언어 (Java, Python 등)에는 버블 정렬보다 더 나은 정렬을 구현하는 컬렉션 클래스가 있습니다. 어떤 경우에도 버블 정렬을 사용해야하는 상황은 전혀 없습니다. 정렬 방법을 포함하는 컬렉션 클래스를 찾아야합니다. 더 좋은 점은 정렬을 완전히 피하는 알고리즘을 찾는 것입니다.

여러 언어를 배워야합니다.

  • 프로그래밍 언어 (자바, Python 등)

  • 쉘 언어.

  • 데이터베이스 언어 (SQL)

  • 프리젠 테이션 언어 (HTML 및 CSS)

  • 기타 데이터 표현 언어 (XML, JSON)

몇 가지 데이터 구조를 배워야합니다.

  • 시퀀스 (목록, 튜플, 파일)

  • 계층 적 (예 : XML 및 HTML 문서, 기본 파일 시스템)

  • 관계형 (예 : 데이터베이스 및 하드 및 소프트 링크가 포함 된 파일 시스템)

  • 해시 맵 및 트리 맵을 포함한 맵 (또는 인덱스 또는 연관 배열)

  • 세트

또한 일부 알고리즘 복잡성 분석. "Big O"라고도합니다. 버블 정렬이 나쁜 이유는 퀵 정렬이 O ( n log n ) 인 O ( n ^ 2)이기 때문 입니다.


기록을 위해 실제로 버블 정렬을 사용하지 않았습니다! 나는 그것이 어떻게 작동하는지 배우는 것이 흥미로운 경험이라는 것을 알았고 사람들이 선택한 언어로 쓸 수있을만큼 충분히 이해해야하는 다른 알고리즘이 몇 가지 있다는 것을 깨달았습니다.
Jon Artus

수많은 알고리즘이 있습니다. 그들 대부분은 나쁘다. 그들 중 일부는 좋습니다. 버블 정렬은 단순히 나쁘다. 알고리즘에 대한 책을 구입하고 계속 진행하십시오.
S.Lott

nit picking이지만 Quicksort는 최악의 경우 O (n ^ 2)입니다. 왜 이것이 사실인지 이해하는 것이 기본 알고리즘을 공부할 때 귀중한 교육 활동이라고 생각하기 때문에 지적합니다.
Brian Ensink

퀵 정렬의 경우 예-중요한 운동입니다. 버블 정렬의 경우 유일한 것은 알고리즘이 얼마나 나쁜지 확인하는 것입니다. 일반적으로 일반적인 대 최악의 경우를 이해하는 것이 중요합니다.
S.Lott

4

이제 벌레 캔이 열려 있습니다! :)
저는 전기 공학에서 시작했습니다.

관계형 데이터베이스 설계 : 데이터 추적은 "Kindergarden Cop"의 Arnold와 같습니다.
그것은 완전한 혼란 일 수 있습니다. 통제되어야합니다.
정보 중복을 최소화하면서 데이터를 가장 적은 위치에 보관하는 방법. 데이터를 가볍게 유지하고 쉽게 액세스하는 방법. 데이터 증가 및 무결성을 제어하는 ​​방법.

사용자 인터페이스 (UI) 디자인 : 사용자 추적중인 데이터에 액세스 해야하는 방법 입니다.
대부분의 UI는 개발자가 설계합니다. 따라서 대부분의 UI는 불행히도 데이터베이스 디자인과 유사합니다. 사용자는 데이터 디자인에 전혀 관심이 없습니다. 그들은 단순히 원하는 것을 원합니다. 그들은 그것을 쉽게 얻고 싶어합니다. 일반적으로이를 위해서는 데이터 디자인과 사용자 인터페이스와의 상당한 분리가 필요합니다. "공학"을 "남쪽 환대"에서 분리하는 방법을 배우십시오.

객체 지향 프로그래밍 : 많은 언어가이 형식으로 요약됩니다.

병렬 처리-멀티 스레딩 : 많은 프로세서가 작업을 빠르게합니다!
병렬 컴퓨터는 수십 년 동안 사용되었습니다. 그들은 지금 당분간 우리의 데스크탑에있었습니다. "클라우드 컴퓨팅"의 경우 대규모 병렬 처리는 필수 사항 일뿐만 아니라 바람직합니다. 엄청나게 강력합니다! 병렬 개발자에게는 많은 직업 잠재력이 있습니다.

비즈니스 규칙 이해 : 테이블 기반의 많은 논리를 만드는 데 도움이됩니다.
많은 IFblock 조건이 비즈니스 규칙 테이블에있을 수 있습니다. 논리를 변경하려면 테이블의 정보를 변경하면됩니다. 기록이 거의 없습니다. 거의 / 다시 컴파일하지 않습니다.

이벤트 감독 ... 메소드가 작업을 수행합니다
. 코드에서 항목을 분리하여 유지합니다. 다른 사람들이 나중에 업데이트하는 것이 더 쉬워집니다. 또한 MVC (Model / View / Controller) 프레임 워크와 다소 유사합니다.

PJ


3

나를 위해 나는 varsity의 다음 과정에서 많은 것을 얻었습니다.

  • 프로젝트 관리
  • 인간 컴퓨터 상호 작용 (매니아들이 사용자 친화적 인 화면을 만드는 데 도움이 됨)
  • 데이터베이스 설계 (데이터베이스 작동 방식, 트랜잭션 로그, 잠금 등 포함)
  • 데이터웨어 하우징
  • 그래픽 (OpenGL)
  • 고급 알고리즘
  • 데이터 구조

내가 대표팀에서 했었 으면하는 일

  • 컴파일러 구성
  • 디자인 패턴
  • 오토마타 이론

3

논리 -프로그래밍에서 논리의 중요성을 과장했습니다. 당신은 기계 공학을했다고 말 했으므로 수학이 당신의 삶을 얼마나 편하게 만들 수 있는지 알아야합니다.

명제 논리 , 1 논리 , 2 차 논리 : 매우 강력한 도구입니다. 아마도 내가 대학에서 배운 가장 (그리고 유일한) 중요한 것들 일 것입니다. 논리는 프로그래머의 무거운 포병과 같습니다. 매우 복잡한 문제 (복잡하지 않은 문제도 포함)를 체계적이고 논리적 인 형식으로 만들면 훨씬 더 간단 해집니다. 기계 엔지니어를위한 선형 대수와 같습니다.


3

컴파일러가 어떻게 작동하는지 잘 이해하는 것이 좋다고 생각합니다. Aho는 컴파일러를 만드는 데 사용되는 개념에 대한 고전적인 책을 가지고 있습니다. 제목은 컴파일러 : 원리, 기술 및 도구입니다. 별명은 Dragon Book입니다. 그 책을 정말로 이해하기 위해서는 공식 언어에 대한 이해가 있어야합니다. Hopcroft는 Automata 이론, 언어 및 계산에 대한 좋은 책을 가지고 있습니다.



2

여기에 이미 많은 좋은 답변이 언급되었지만 중요한 부분을 추가하고 싶었지만 지금까지 다루지 않았습니다.

학부 이후 전문 소프트웨어를 15 년 동안 개발 한 후 학교에서 다음 개념 중 일부를 정기적으로 사용합니다.

  • 일반 OO 개념 및 최신 프로그래밍 언어 기능 (클래스, 데이터 숨김 등).
  • 알고리즘 성능 메트릭 (Big O 표기법). 알고리즘을 설계 할 때 Big O 분석을 수행하여 알고리즘 비용을 결정하고 병목 영역에서보다 효율적인 대안을 찾습니다.
  • 연결된 목록 및 기타 복잡한 데이터 구조.
  • 빠른 정렬 및 다른 정렬 개념.
  • 나무와 빠른 나무 조작.

언어 / 플랫폼이 가비지 수집을 지원하지 않는 경우 메모리 할당 및 정리가 중요하며 목록에 추가됩니다.


2

나는 이산 수학을 찬성합니다. 컴퓨터 과학은 추상화입니다. 수학자처럼 생각하는 법을 배우는 것은 매우 도움이됩니다.

나는 또한 S.Lott가 언어에 대해 말한 것에 추가하고 싶었습니다. 다양한 유형의 언어를 배우는 것도 중요합니다. 컴파일과 스크립팅 뿐만이 아닙니다. 하지만 기능적 (ML, Lisp, Haskell) 논리적 (Prolog) 객체 지향 (C ++, Java, Smalltalk) 명령 (C, Pascal, FORTRAN조차).

프로그래밍 패러다임이 많을수록 새로운 언어가 등장 할 때 새로운 언어를 더 쉽게 선택할 수 있습니다!


2

일부 OS 개념

 ( memory, IO, Scheduling, process\Threads, multithreading )

[좋은 책 " 최신 운영 체제 , 2nd Edition, Andrew S. Tanenbaum"]

컴퓨터 네트워크에 대한 기본 지식

[ 타넨 바움 의 좋은 책

OOPS 개념

유한 autometa

프로그래밍 언어 (나는 C를 먼저 배운 다음 C ++)

알고리즘 (시간 \ 공간 복잡성, 정렬, 검색, 트리, 연결 목록, 스택, 대기열)

[ 알고리즘 입문 좋은 책 ]


자동 메타? -첫 번째 편집에 따라 확실히 "automata".
Tom Duckering 2009

이런! 철자 검사에 실패한 것 같습니다. 내가 정정하겠습니다. 감사.
aJ.


1

모든 수준의 프로그래밍을 이해하려고 노력하십시오. 가장 낮은 수준 (조립품)에서 가장 높은 수준까지.

예를 들어 쉬운 기능인 재귀를 생각해보십시오. :) 어셈블리를 배우고 어셈블리에서 재귀를 사용할 프로그램을 만들어보십시오.


1

알고리즘.

하강 방식으로 프로그래밍 언어를 사용하는 방법을 배우는 것은 진행하면서 배울 수있는 것입니다.하지만 널리 사용되는 모든 알고리즘을 혼자서 발명하는 것은 사실상 불가능합니다. 적어도 할 수있는 것과 할 수없는 것을 알고 있어야합니다. 몇 가지 문제가 있습니다.

예를 들어, 버블 정렬로 일부 프로그램을 작성할 수 없으며 코드가 아무리 훌륭하더라도 좋은 것으로 간주 될 수 있습니다.

요약하자면, 알고리즘 소개를 살펴보십시오.

마스터 할 필요가 없습니다. 무슨 일이 일어나고 있는지 알기 만하면됩니다.



1

객체 지향 프로그래밍, SOLID 원칙 과 같은 훌륭한 지침 원칙에 대한 명확한 이해입니다. 과 같은 확립 된 패턴 및 관행에 .

SOA 또는 DDD를 살펴보면 결국 모두 일종의 OOP 개념으로 돌아갑니다.

좋은 OOP 책을 구하고 C # 또는 Java와 같은 풍부한 언어를 선택하여 시작하는 것이 좋습니다.

Grady Booch의 OOP

(PHP, 루비 녀석들은 저에게 아래로 투표하지 마십시오. 저는 그에게 시작하는 몇 가지 예를 제공하고 있습니다. 여기에서 자신의 답변과 제안을 제공 할 수 있습니다.)



1

공부할 특정 개념에 대해 말씀 드리지 않겠습니다. 대신 광범위한 주제에 대해 가벼운 독서를 많이하는 것이 좋습니다. 읽은 각 주제에 대해 깊이 이해하는 것에 대해 걱정하지 마십시오.이 시점에서 어떤 종류의 주제인지 인식 할 수있는 것이 더 중요합니다. 보고있는 문제의 실제로 직면 할 때 제 시간에 공부합니다. 즉, 조합 문제를 해결하는 방법을 모르는 경우에도 괜찮습니다. 개체 집합을 정렬하거나 하위 집합을 선택할 수있는 방법을 확인해야 할 때 "조합"을 찾을 수있을만큼 충분히 알고 있다면 괜찮습니다. .

Wikipedia는 이러한 종류의 광범위한 브라우징을위한 꽤 좋은 리소스입니다. 특히 처음부터 훑어 보는 중이라면 더욱 그렇습니다. 특히 Wikipedia가 너무 학문적이거나 접근 할 수없는 경우 더 나은 것은 C2 wiki 입니다. (이것은 흥미롭게이다 워드 커닝햄에 의해 발명 원래 위키).


0

멀티 스레딩의 기본 이론을 이해하는 것이 중요하다고 생각합니다. 그렇지 않으면 일요일 아침 4시에 라이브 서버에서 디버깅 할 때까지 문제가있을 수 있다는 사실을 알기조차 어려울 수 있습니다.

세마포어, 중요 섹션 및 이벤트.


0

아니요, 버블 정렬이 아니라 퀵 정렬입니다. 그것은 O (n ^ 2), 퀵 정렬은 O (n * log (n))입니다.


0

아래는 가장 중요한 것입니다.

  • 객체 지향 프로그래밍
  • 운영 체제 개념
    • 프로세스 및 스레드
    • 스케줄링 알고리즘
  • 데이터 구조
    • 데이터 저장 및 수집 유형, 유형 (연결 목록, 해시, 배열 등)
    • 알고리즘 정렬
    • 알고리즘의 복잡성

그런 다음 특정 언어 관련 항목으로 이동하십시오. 도움이 되었기를 바랍니다 !!


0

나는 따옴표로 시작할 것입니다.

"당신이 가진 유일한 도구가 망치라면, 당신은 모든 것을 못처럼 취급합니다." (에이브 라함 매슬로)

가장 중요한 원칙 인 IMO는 다양한 프로그래밍 패러다임과 언어를 알고 자신이 원하는 도구에 대해 잘 알려주는 것입니다. 당신이 선택한 거의 모든 언어로 모든 문제를 해결할 수 있습니다. 거대한 기본 라이브러리가있는 완전한 주류 언어이거나 AutoHotKey와 같은 작은 특수 언어입니다. 프로그래머의 첫 번째 임무는 문제의 사양에 따라 무엇을 사용할지 결정하는 것입니다. 일부 개념은 정교함, 난독 화, 성능, 이식성, 유지 관리, 작은 코드 크기 등 주요 목표가 무엇이든 주제에 대한 더 나은 접근 방식을 제공합니다.

그렇지 않으면 자신이 전문화 한 하나의 언어로 무언가를 필사적으로 시도하는 일부 프로그래머처럼 끝낼 수 있지만 다른 프로그래밍 컨텍스트에서 문제를 해결하는 것은 사소 할 수 있습니다.

이 조언은 다국어 프로젝트에 대한 오늘날의 경향과 함께 진행됩니다 (예 : C #, JS, CSS, XPath, SQL, XML, HMTL, RegExp ....와 같은 단일 애플리케이션에 여러 언어가 포함될 수있는 웹 애플리케이션을 예로들 수 있습니다. 다른 프로그래밍 패러다임 (예 : C #은 최근에 함수형 프로그래밍 패러다임, 람다에서 일부 개념을 도입했습니다).

그래서 기본은 끊임없는 학습입니다. :)


0

나는 생각한다 3D 그래픽 은 모두가 배워야 할 부분 합니다. 또는 적어도 동종 벡터와 행렬 변환을 올바르게 사용하는 방법.

3D 애플리케이션 제작뿐만 아니라 아니라 로봇의 역 운동학, 모멘트 계산 및 기타 많은 작업과 같은 기계 분야에서도 .

나는 우리 선생님이 나쁘지만 내가 수강 한 최고의 코스 중 하나 인 3D 그래픽을 읽을 때까지 선형 대수를 완전히 이해하지 못했습니다.


0

다중 코어 (CPU 및 GPU 모두)가있는 머신이 표준이되고 있기 때문에 분산 알고리즘 (다중 스레드에서 다중 머신으로) 을 포함한다고 말하고 싶습니다 . 멀티 스레딩 및 분산 처리를 이해하는 것이 중요합니다. 링크가 실제로 많은 도움을 제공하지 못해 죄송합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.