컴퓨터 과학의 과학은 죽었습니까? [닫은]


18

질문 : CS의 과학과 예술은 죽었습니까? 다시 말해서 문제를 생각하고 계획하고 효율적으로 해결하기위한 실질적인 요구 사항은 요즘 CS에서 떨어지고있는 것 같습니다. 이 분야는 진입 장벽을 낮추는 것으로 보이며 더 많은 사람들이 진정한 프로그래밍 방법을 배우지 않고도 '프로그램'할 수 있습니다.

배경 : 저는 최근 컴퓨터 과학 학사 학위를 취득했습니다. 저는 IT 부서의 괜찮은 규모의 회사에서 시작 직책을 수행하고 있습니다. 나는 주로 직장에서 .NET 및 기타 Microsoft 기술을 사용하지만, 그 전에 인턴쉽 등을 통해 Java 작업을 수행했습니다. 저는 개인적으로 재미있는 프로젝트를위한 C ++ 프로그래머입니다.

깊이 : 내가 한 일을 통해 실제 과학의 강렬한 학문은 더 이상 CS에 존재하지 않는 것 같습니다. 과거에는 프로그래머가 시스템을 강력하고 빠르게 만들려면 문제를 효율적으로 해결해야했습니다. 그러나 이제는 .NET, Java 및 스크립팅 언어와 같은 널리 사용되는 기술을 통해 효율성과 견고성이 개발 용이성을 위해 거래 된 것처럼 보입니다.

나와 함께 일하는 대부분의 동료들은 컴퓨터 공학 학위를 가지고 있지 않습니다. 대부분은 전기 공학 학위를, 일부는 소프트웨어 공학을, 일부는 4 년 프로그램이없는 기술 학교 출신입니다. 그러나 그들은 CS의 기술적 배경이나 이론과 알고리즘을 공부하지 않고 우아한 솔루션을 만들지 않아도됩니다 (그들은 가장 쉽고 저렴한 솔루션을 선택합니다).

이 회사는 Microsoft 기술을 사용하도록 촉구합니다. Microsoft 기술은 문제의 모든 실질적인 생각을 없애고 프로젝트를 반 시간 동안 자동으로 빌드 할 수있는 라이브러리 및 도구로 대체합니다. 나는 언어를 싫어하지 않고 언어가 목적을 달성하고 잘 수행한다는 것을 이해하지만 직원이 해시 테이블의 작동 방식을 모르고 잘못된 정렬 방법을 사용하거나 SQL 명령을 실행하는 경우 끔찍하게 비효율적이지만 (적당한 시간 안에 일을 끝내십시오) 실제로 사람들에게 올바른 일을하는 법을 가르치기보다는 새로운 '프로그래머'를 묶는 기술 개발에 더 많은 노력을 기울이고 있다고 생각합니다.

나는 효율적이고 내 의견으로는 아름다운 프로그램을 만드는 데 관심이 있습니다. 더 좋은 방법이 있다면 슬라이드를 돌리는 것보다 돌아가서 리팩토링하는 것이 좋습니다. 그러나 기업 세계에서 그들은 우아하지 않고 신속하게 작업을 완료하도록 강요합니다. 그리고 그것은 정말로 나를 괴롭 힙니다.

이것이 내 남은 인생을 기대할 것입니까? 월급보다는 CS의 과학과 예술을 좋아하는 사람들을위한 입장이 여전히 있습니까?

같은 메모 에서 Java Schools의 위험 이전에 보지 못했다면 여기를 읽어보십시오.


2
두 가지-1. 개발이 어려울 필요는 없습니다. 2. 잘 작성된 프로그램은 확장 성이 중요한 상황에서 필수적 일 것입니다. 그래도 원칙적으로 말하는 것에 동의합니다. 나는 초보자 프로그래머라고 생각하지만 사전 작성된 프레임 워크 등을 사용하지 않고 저수준 (모든 정도로)을 배우는 데 관심이 있습니다. 나는 내 자신이 될 모든 종류의 프레임 워크를 사용한다
Anonymous

48
나는 당신의 CS와 프로그래밍을 혼동한다고 생각합니다. 이것들은 서로 관련이 있지만 두 가지 다른 것입니다.
Darknight

1
@ chris 전적으로 동의합니다. 나는 프레임 워크와 라이브러리를 광범위하게 사용하지만 문제와 라이브러리가 그것을 어떻게 해결하는지 이해하지 않고 먼저 시도합니다. 일단 알고 나면 모든 문제에서 일반 라이브러리를 던지고 스틱을 사용하기를 기대하는 대신이 인스턴스에서 어떤 라이브러리가 가장 적합한지를 선택할 수 있습니다.
Veaviticus

8
이 질문으로 어떤 문제를 해결하려고합니까?
제레미

15
@Veaviticus, 당신은 배관공 들이 유체 역학을 알기 를 기대합니다 (그들의 일을 더 잘 할 수 있도록?). 대부분의 업무용 응용 프로그램 (데스크톱 / 웹)은 매우 복잡한 문제를 해결하지 않아도됩니다 (거의 드물게). CS의 배경 지식이 도움이 되나요? 거의 확실히. LOB에 필요 합니까? -> 실제로는 아닙니다.
Darknight

답변:


25

예 ... 아니요

좋은 질문이지만 잘못된 가정입니다.

교육의 과학 부분은 부족한 것으로 보이지만 과학이 단순히 프로그램을 효율적으로 만들기 위해 존재한다는 가정은 잘못 안내됩니다.

과학은 사람들 에게 문제를 정의하고 해결하는 방법을 가르치기 위해 필요했습니다 .

안타깝게도 일부 "CS"커리큘럼 (커리큘럼?)의이 부분은 완전히 생략되어 사소한 또는 알려진 솔루션으로 장난감 문제로 대체 된 것으로 보이며 단순히 도구에 대한 친숙성을 가르치기위한 것입니다.

실망; 많은 Java 학교 졸업생들은 부족했으며 문제를 분해하고 알고리즘을 설계하고 테스트를 지정하거나 효과적으로 디버그하는 방법을 가르치지 않았습니다.


2
나는 Java에 그다지 스트레스를주지 않는 학교에 다녔습니다. 대부분 내가 한 일은 C ++이었습니다. 그러나 그들은 여전히 ​​우리에게 당신이 언급 한 것을 수행하는 방법을 가르쳐주지 않았습니다. 그들은 기초를 다루고, 물건을 훑어보고, 각 교수의 관심사에 대해 깊이 설명했습니다. 요즘 학교는 과학자 대신 가능한 한 많은 '개발자'를 끌어 내려고하는 것 같습니다.
Veaviticus

@Veaviticus : 다행 이네요. 우리 대학의 교수들은 정신 분열증 수준의 추상화를 가지고 있으며 시험에 대한 그들의 생각은 "정확한 공식적 정의"입니다.
DeadMG

언어는 문제를 분해하는 가르침과 아무 관련이 없습니다. 문제는 C, Java 또는 Ruby인지에 관계없이 문제입니다.
Rig

29

컴퓨터 과학의 과학은 죽었습니까? "..."컴퓨터 공학 학사 학위를받은 최근 졸업생입니다. 저는 IT 부서 의 괜찮은 규모의 회사 에서 시작 위치를 찾고 있습니다.

솔직히 말해서, 내 자신의 두 센트 : 당신은 컴퓨터 과학의 "과학"을 괜찮은 규모의 회사의 IT 부서에서 일하는 것을 찾지 못할 것입니다. CS 부서가 아닌 IT 부서이기 때문입니다. 박사 학위를 위해 학교로 돌아가거나 컴퓨터 과학 (예 : 이미지 처리, 고성능 네트워크, 컴퓨터 대수 시스템, 항공 우주 등)에 중점을 둔 회사의 엔지니어링 부서에서 근무하십시오. 이 곳은 조잡한 디자인이 일반적으로 용납되지 않는 어렵고 흥미로운 문제를 발견 할 수있는 곳입니다.

"봉급보다는 CS의 과학과 예술을 사랑하는 사람들을위한 입장이 아직 남아 있습니까?"

예, 물론 중간 규모의 IT 부서에는 해당되지 않습니다.


16

프로그래머라면 자신을 "컴퓨터 과학자"라고 생각하지 마십시오. 컴퓨터 과학자들은 차세대 컴퓨터를 만드는 사람들이며, 그 중 일부는 올바른 재료 혼합, 축소 및 계산 이론이 도출 될 때까지 여전히 공상 과학 소설입니다. 그들은 파이프 라인의 시작일뿐입니다. 여기에서 현재 소프트웨어를 개발하는 사람들은 "소프트웨어 엔지니어"입니다. 그들은 이론과 도구를 취하고 때로는 실제 이론과 실제 도구를 계층화하여 복잡한 전기 전자 마법사의 힘을 이용하여 우리가 원하는 것을 수행하게합니다. 그것은 "컴퓨터 공학"분야의 하나의 전문화로, 컴퓨터 과학자들의 이론을 취해 하드웨어와 소프트웨어를 실제 최종 사용자 전자 솔루션에 적용합니다.

이것은 비즈니스가 이론을 충족시키는 IMO입니다. 이러한 유형의 경우에, "더 나은 선의 원수가 충분하다"라는 오래된 속담을 쉽게 바꿀 수 있습니다. 자신을 "과학자"대신 "엔지니어"로 간주하고 다른 공학 분야와 병행하여 수행하는 작업을 수행하면 차이점이 완화됩니다.

고객이 토목 / 구조 엔지니어 인 당신에게 와서 다리를 만들라고 요청한다고 가정 해 봅시다. 교량은 20 피트, 자체지지 및 1 톤 운반 하중이 필요하며 정기 유지 보수를 통해 10 년 동안 지속되어야하며 한 달에 2 만 달러를 원합니다. 그것들은 당신의 제약입니다; 최대 값을 초과하지 않으면 서 최소값을 충족하십시오. 그렇게하는 것은 "충분히"좋고 월급을받습니다. 설계 사양과 예산을 몇 배나 크게 초과하는 Golden Gate Bridge를 구축하는 것은 엔지니어링이 좋지 않습니다. 당신은 일반적으로 비용 초과를 먹고 시간 초과에 대한 위약금을 지불하게됩니다. 시간과 재료가 $ 1000에 불과하지만 5 명의 어른의 무게에 맞는 로프 브릿지를 건설하는 것은 좋지 않은 엔지니어링입니다. 좋은 고객 리뷰와 평가를 얻지 못합니다.

소프트웨어로 돌아가서 들어온 파일을 다이제스트하고 정보를 시스템에 저장하기 위해 파일 처리 시스템이 필요한 클라이언트가 있다고 가정합니다. 그들은 일주일 안에 완료하기를 원하며 현재 약 10MB에 달하는 5 개의 파일을 처리해야합니다. 당신의 소중한 이론은 크게 창 밖으로 나옵니다. 귀하의 작업은 일주일 안에 해당 사양을 충족하는 제품을 구축하는 것입니다. 그렇게하면 고객의 비용 예산도 충족시킬 수 있기 때문입니다 (자재는 일반적으로이 크기의 소프트웨어 계약에 대한 버킷의 하락으로 인해). 2 주 동안 10 배의 이득을 얻는 것도 선택 사항은 아니지만 하루에 2 개의 사본을 실행하라는 지시와 함께 처리량의 절반 만 처리 할 수있는 프로그램도 아닙니다.

이것이 프린지 사건이라고 생각한다면, 당신은 틀린 것입니다. 이것은 대부분의 사내 환경입니다. 그 이유는 ROI입니다. 이 초기 프로그램은 많은 비용이 들지 않으므로 매우 빠르게 비용을 지불합니다. 최종 사용자가 더 많은 작업을 수행하거나 더 빠르게 수행해야하는 경우 코드를 리팩토링하고 확장 할 수 있습니다.

이것이 현재 프로그래밍 상태의 주된 이유입니다. 컴퓨팅의 전체 역사에서 나온 가정은 프로그램이 결코 정적 인 것이 아니라는 것입니다. 항상 업그레이드해야하며 결국 교체됩니다. 동시에, 프로그램이 실행되는 컴퓨터의 지속적인 개선으로 이론적 효율성에 대한 관심이 줄어들고 확장 성과 병렬화에 대한 관심이 증가합니다 (N 제곱 시간에 실행되지만 N 코어에서 실행되도록 병렬화 될 수있는 알고리즘). 선형적인 것으로 보이며, 더 효율적인 솔루션을 고안하기 위해 더 많은 하드웨어 비용이 개발자의 비용보다 저렴합니다.

또한 개발자 코드의 모든 줄이 잘못 될 수있는 매우 간단한 신조가 있습니다. 개발자가 글을 적게 쓸수록 글을 쓰는 데 문제가있을 가능성이 줄어 듭니다. 이것은 누군가의 "버그 속도"에 대한 비판이 아닙니다. 간단한 사실 진술입니다. MergeSort를 5 개 언어로 앞뒤로 작성하는 방법을 알고있을 수 있지만 한 줄의 코드에서 하나의 식별자 만 팻 핑거링하면 전체 정렬이 작동하지 않으며 컴파일러가이를 포착하지 못하면 걸릴 수 있습니다. 디버깅하는 데 몇 시간이 걸립니다. 이것을 List.Sort ()와 대조하십시오. 그것은 거기에 있고, 일반적인 경우에는 효율적이며, 가장 좋은 것은 이미 작동합니다.

따라서 현대 플랫폼의 많은 기능과 최신 디자인 방법론이이를 염두에두고 구축되었습니다.

  • OOP-관련 데이터와 논리를 객체로 작성하고 해당 객체의 개념이 유효한 곳이면 객체 또는보다 전문화 된 파생물입니다.
  • 사전 빌드 된 템플릿-60 % 이상의 우수한 코드는 구문상의 균열이며 프로그램이 화면에 무언가를 표시하도록하는 기본 사항입니다. 이 코드를 표준화하고 자동 생성함으로써 개발자의 작업량을 절반으로 줄여 생산성을 높일 수 있습니다.
  • 알고리즘 및 데이터 구조 라이브러리-위와 같이 Stack, Queue, QuickSort 등을 작성하는 방법을 알고있을 수 있지만이 모든 것이 내장 된 코드 라이브러리가있는 경우 왜해야합니까? 웹 사이트가 필요했기 때문에 IIS 또는 Apache를 다시 쓰지 않을 것입니다. 그렇다면 몇 가지 훌륭한 구현이 가능할 때 QuickSort 알고리즘 또는 레드 블랙 트리 개체를 구현하는 이유는 무엇입니까?
  • 유창한 인터페이스-같은 줄을 따라 레코드를 필터링하고 정렬하는 알고리즘이있을 수 있습니다. 빠르지 만 읽기 쉽지 않을 것입니다. 주니어 개발자는 이해하기 위해 하루가 걸릴 것입니다. 레코드 객체의 추가 필드를 정렬하는 데 필요한 외과 적 변화는 물론입니다. 대신 Linq와 같은 라이브러리는 매우 추악하고 취성적인 코드를 구성 가능한 메소드 호출로 한 줄 또는 두 줄로 대체하여 객체 목록을 필터링, 정렬, 투사 된 객체로 바꿉니다.

2
좋은 대답이지만 한 가지 중요한 점이 빠졌습니다. "복제 할 수없는 것은 이해가되지 않습니다." 그들이 어떻게 작동하는지 아는 것이 모든 프로젝트에 대해 직접 입력한다는 것을 의미하지는 않습니다. 오히려, 당신이 가장 좋은 것을 고르는 데 도움이 될 각각의 장단점을 알 수 있습니다. 그런 다음 알고리즘 / 데이터 구조가 표준 라이브러리에 있는지 여부 만 알면됩니다.
Michael K

당신의 격언이 틀린 것을 제외하고; 나는 성공적으로 복제 할 희망이없는 중요한 물건의 개념을 매우 명확하게 이해할 수 있습니다. 원칙적으로 동의합니다. 모든 종류의 성공적인 엔지니어는 작동하는 솔루션을 선택하기에 충분한 이론을 알아야합니다. 그렇다고 엔지니어가 각자의 사양을 알고 집에 적합한 것을 선택하기 위해 모든 유형의 전구를 만들 수 있어야한다는 의미는 아닙니다. 마찬가지로, 처음부터 하나를 구현하는 방법에 대한 단서없이 빨강 검정 트리를 사용하여 성능과 적절한 응용 프로그램을 이해할 수 있습니다.
KeithS

공학과의 비유는 좋지 않습니다. CS의 "더 나은 교량"이 반드시 많은 비용을 지불하는 경우는 아닙니다. 종종 올바른 도구에 어떤 도구가 적합한 지 이해하는 문제 일뿐입니다. 꽤 복잡한 교과서 알고리즘을 구현하는 것조차 사람들의 안락 영역을 벗어나는 경우가 많지만 범위에 따라 어렵거나 비싼 개념은 아니지만 (수업이 아닌 사람이 프로젝트라고 가정하면) 어렵습니다. 맞춤 구현이 필요 없으며 Google에 적합한 도구와 키워드를 아는 것만으로도 훨씬 쉽습니다.
Eamon Nerbonne 2018 년

8

IT는 CS가 아닌 IT를 수행하고 있으며 CS가 죽었다는 것을 암시해서는 안됩니다. CS는 죽지 않았습니다. 단지 대부분의 작업이 소프트웨어 개발에 있다는 것입니다. 대부분의 CS 학생들은 프로그램을 배우기 때문에 대개 컴퓨터 과학자가 아닌 프로그래머로 고용됩니다. 컴퓨터 과학 직종은 프로그래밍 직무와 비교할 때 매우 소량입니다. 컴퓨터 과학 기술을 사용하여 복잡한 응용 프로그램을 수행 할 수도 있지만 과학자 캠프보다 엔지니어링 캠프에 속하는 내 의견으로는 (주관적이므로 의견 답변을 좋아하지 않습니다).

또한 아름답고 우아한 코드는 보는 사람의 눈에 보이지만 대부분의 회사 / 관리자 에게는 정시에 충분한 디자인을 유지하는 것이 아름다운 코드보다 훨씬 중요하지만 정시에 끝나지 않습니다.

마지막으로, 현실 세계와 라일 랜드가 있습니다. 불행하게도, 우리는 전자로부터 급여를 받고, 소프트웨어 개발의 "과학 / 기술"은 시간 / 예산 제약으로 높은 소프트웨어 품질을 생산하는 방법에 관한 것입니다. 나는 당신이 내 경력을 시작할 때와 같은 느낌을 느꼈습니다. 나는 항상 "최고의"를 만들고 싶었지만 곧 "최고의"가 가장 효율적이거나 우아하지 않고 가장 비용 효율적인 디자인이라는 것을 깨달았습니다.


3
"아름답고 우아한 코드"대 "좋은 enuogh, 그러나 시간에 맞춰"는 잘못된 이분법입니다. 디자인이 단순하고 단순한 디자인이 아름다운 디자인 인 경우 정시에 마무리하는 것이 더 쉽습니다. 단, 단순 의미하지 않는다 단순한 .
pillmuncher 2016 년

1
@pillmuncher, 예, 나에게, 아름다운 코드는 간단하지만 (단순하지는 않지만) 불행히도 전제는 주관적 / 상대적이라는 것을 동의합니다. 「심플한 디자인은 아름다운 디자인과 같다」는 단언이 아니라 의견 (100 %에 동의한다는 매우 대중적인 의견이지만 여전히 의견)입니다. 의견이 아닌 것은 일정, 요구 사항 및 비용입니다. 이러한 제약은 주어진 구속 조건에 대해 충분한 디자인으로 이어지는 경향이 있습니다.
Armando

"[1] IT는 CS가 아닌 IT를하고 있고 CS가 죽었다는 것을 암시해서는 안된다고 생각합니다. [2] CS는 죽지 않았습니다. 단지 대부분의 작업이 소프트웨어 개발에 있다는 것입니다." 귀하의 첫 번째 진술은 정확합니다. OP는 CS가 아닌 IT에 있습니다. 그러나 소위 "컴퓨터 과학자들"도 소프트웨어 개발을 수행하기 때문에 두 번째 진술에 대해서는 문제를 제기합니다. 이를 "연구 및 개발"이라고하며, 특정 네트워킹 토폴로지에서 라우팅 알고리즘의 정확성을 정의, 해결 및 입증 한 다음 "공식"또는 프로토 타입 구현을 구현하는 컴퓨터 과학자의 사례가 있습니다.
Bill VB

8

우선, 당신이 잘못했습니다. "문제를 생각하고 계획하고 효율적으로 해결하는 것" 은 과학이 아니라 공학입니다. 과학은 새로운 분야를 탐구하는 것에 관한 것입니다. 실제로 학계에서는 사람들이 산업보다 코드의 효율성에 대해 훨씬 덜 신경을 씁니다. 학계에서는 개념 증명 등에 관한 것입니다.

아니, 당신이 설명하는 것은 소프트웨어 개발에 덜 깊이있는 지식이 필요하다는 것입니다. 요구 사항이 동일하다면 어느 것이 사실 일 수 있습니다. 그러나 오늘날 소프트웨어 엔지니어는 멀티 스레딩, 분산 컴퓨팅, 스케일링 등을 처리하는 방법을 알고 있어야합니다. 프로젝트를 효율적으로 이끌 수있는 방법을 알고 있어야합니다. 이것의 대부분은 수십 년 전에 커리큘럼에 전혀 없었습니다.


내가 여기서 읽고있는 내용이 아닙니다. 많은 학교는 공학을 가르치지 않고 언어를 가르칩니다. 그것은 단지 토목 공학 학생에게 Autocad를 가르치는 것과 매우 흡사합니다.
Michael K

@ 마이클 : 괜찮은 대학교도 보지 못했습니다 .
vartec

1
나는 RIT에 간다. 그것은 순위가 높고 여전히 엉터리입니다. 다른 교과 과정에서 단지 4 년 또는 5 년 만에 프로그램을 수행 할 수 없기 때문에 어떤 학교도 프로그래밍을 가르치지 않습니다 .
Jon Purdy

4

나는 정확히 옳은 일을 당신이 말한 생각하지 않지만, 당신은 할 뭔가 어쨌든 점을. 특히, 시간이 지남에 따라 컴퓨터 공학과 소프트웨어 공학이 분리되어 있다고 생각합니다.

소프트웨어 공학 (다른 공학과 마찬가지로)은 과학을 적용하여 제품을 구축하고 문제를 해결하는 것에 관한 것입니다. 컴퓨터 과학은 주로 알고리즘에 대한 연구와 (이 부분은 다소 잊어 버린 경우가 있습니다) 알고리즘을 구현하는 방법 (적어도 이론적 인 의미로) -예를 들어, 모든 PRAM 머신을 동등한 것으로 취급 할 수 있습니다.

사람들을 염두에 두면서 분기의 원인은 분명해 졌다고 생각합니다. 일반적인 웹 사이트와 같은 것과 관련된 대부분의 알고리즘 문제는 이미 오래 전에 해결되었습니다 . 아마도 더 중요한 것은 대부분의 웹 개발자가 일반적인 웹 개발자에게 문제가 거의 완전히 사라질 정도로 충분히 해결되었다는 것입니다. 예를 들어, 분산 데이터베이스에 대한 원 자성 업데이트를 수행하는 것은 결코 쉬운 일이 아니지만 일반적인 웹 개발자는 SQL을 작성하기 때문에 작업 방법을 알아내는 데 얼마나 많은 연구가 필요한지 전혀 알지 못합니다. 확실하게.

한때는 컴퓨터 공학과 소프트웨어 공학을 분리하는 것이 본질적으로 불가능했습니다. 비교적 사소한 프로그램을 작성하는데도 기본에 대한 연구가 필요하다는 문제는 거의 해결되지 않았습니다. 50 년대 후반이나 60 년대 초에 여러 데이터를 정렬하는 것만 큼 간단한 작업을 원한다면 데이터를 분석하고 디자인하려고 시도 할 가능성이 매우 높았습니다. 특정 데이터를 정렬하는 데 가능한 한 적합하고 적합한 알고리즘 (오늘날 알려진 정렬 알고리즘에 근접한 곳은 없으며 알려진 알고리즘조차도 오늘날처럼 거의 알려지지 않은 알고리즘) .

50 년의 연구 개발이 성과를 거두었습니다. 가장 일반적인 개발은 알려진 알고리즘뿐만 아니라 사전 작성된 구현도 사용할 수 있습니다. 알고리즘의 기존 지식 (및 기존 구현)을 기반으로 가장 일반적인 문제를 상당히 합리적으로 해결할 수 있습니다.

그렇다고 컴퓨터 과학이 죽었다는 의미는 아닙니다. 연구 할 알고리즘이 더 많고 사람들이 연구를하고 있습니다. 그러나 이는 대부분의 연구가보다 전문화되어 있으며 상당히 전문화 된 분야에만 적용될 가능성이 높다는 것을 의미합니다. 지식 습득과 적용 사이에는 더 큰 차이가있을 수 있습니다. 한 번에, 정렬 프로그램을 작성하는 과정에서 더 나은 정렬 방법을 알아 냈고 거의 즉시 실제 코드로 작성되었습니다. 이제 많은 컴퓨터 과학이 본질적으로 무한한 수의 프로세서를 사용하는 방법에 전념하고 있습니다. 언젠가는 유용 할 것이지만 원시 부족조차도 내 컴퓨터의 듀얼 코어를 "많은"것으로 간주하지 않습니다 ... :-)


1

소프트웨어 개발과 컴퓨터 과학은 같은 것이 아니며 B.Sc. 이 때문에 Comp Sci 프로그램이 좌절되었습니다.

저는 그림이 시각 예술의 산물 인 것처럼 소프트웨어를 컴퓨터 과학의 산물로 생각합니다.

CS 학위를 가진 대부분의 사람들은 특히 경력의 초기 단계에서 소프트웨어 개발을 수행하기 위해 일자리를 얻습니다. 이 역할을하는 많은 사람들이 그곳에 머무르고 더 이상 가지 않는다고 생각합니다.

새로운 문제 나 패러다임이 나타날 때 또는 "함께 움켜 쥐기"가 충분하지 않을 때 차이가 나타나기 시작합니다. 누가 새로운 프레임 워크 나 언어를 구축합니까? 누가 새로운 물리 엔진의 세부 사항을 파악하고 망치 는가? 누가 그래프 이론 / 그래프 변환을 사용하여 알고리즘의 성능 반복마다 몇 번의주기를 수행합니까?

소프트웨어 개발 / 엔지니어링 역할에 많은 컴퓨터 과학자들이 있고 그들의 잠재력에 부응하지 못한다는 데 동의하면서 시작한 곳을 마치겠습니다.


1

컴퓨터 과학과 프로그래밍 및 소프트웨어 개발을 혼동하는 것 같습니다. 둘은 동일하지 않으며 심지어 가깝지도 않습니다. 우리의 학위에 관계없이 우리 대다수는 컴퓨터 과학자가 아닌 프로그래머입니다. 당신이 적극적으로 학계에 적극적으로 참여하지 않는 한, 나는 당신이 실제로 컴퓨터 과학에서 무슨 일이 일어나고 있는지 전혀 모른다고 생각합니다.


0

컴퓨터 과학은 살아 있고 잘 작동한다고 말할 수 있습니다. 매일 새로운 문제를 해결하고 그 문제에 대한 효과적이고 우아한 해결책을 찾아야합니다. 나는 매일 엔지니어로서 나의 기술을 사용하고 고객과의 문제를 해결하기 위해 나 자신과 동료의 지식을 사용해야합니다.

나는 언어를 싫어하지 않고 언어가 목적을 달성하고 잘 수행한다는 것을 이해하지만 직원이 해시 테이블의 작동 방식을 모르고 잘못된 정렬 방법을 사용하거나 SQL 명령을 실행하는 경우 끔찍하게 비효율적이지만 (하지만 수용 가능한 시간 내에 작업을 수행하십시오) 실제로 사람들에게 올바른 일을하는 법을 가르치기보다는 새로운 '프로그래머'를 묶는 기술을 개발하는 데 더 많은 노력이 기울이고 있다고 생각합니다.

이것은 직원의 문제처럼 들리며 모든 프로그래머에게 해당되는 것은 아닙니다.

업무를보다 쉽게 ​​수행 할 수있는 도구가 존재한다고해서 밑줄 기술을 이해해서는 안된다는 것을 의미하지는 않습니다. 누군가를 돕지 않고 문제를 올바르게 해결하는 데 확실히 노력하지 않는 경우.


나는 동의한다. 생각할 필요가없는 직업이 없다거나 모든 개발자가 자신이하는 일을 전혀 모른다고 말하려고하지는 않지만 CS 프로그램에서 나온 것이므로 학교가 그렇지 않다고 말할 수 있습니다 내가 아는 것의 절반을 가르쳐주세요. 나는 그들 스스로 배웠다. 그리고 이제 그것들을 알았으므로 나를 위해 그것을하는 프레임 워크를 사용할 수 있습니다. 나는 내 자신에 그것을 배운하지 않은 경우에, 난 그냥 맹목적으로 가장 자주 잘못, 프레임 워크를 사용하는 것
Veaviticus

0

당신은 당면한 문제를 이해하지 못했습니다. 문제는 최대 성능을 얻는 것이 아니라 앱의 응답 성과 속도가 충분히 빠를 수있는 성능을 얻는 것입니다. 프로그램을 배우는 것은 적은 비용으로 문제를 해결하는 것입니다.

이런 식으로 표현하기는 싫지만 CS의 죽음에 대한 인상은 "실제"프로그래머가해야 할 일에 대한 자신의 사전 개념 일뿐입니다.


권리. 사업체가 돈을 벌어야한다는 것을 알고 있습니다. 그리고 나는 내 응용 프로그램의 일부를 가능한 한 빨리 "충분히 빨리"만드는 데 결백하지 않습니다. 많은 개발자가 (최소한 내가 말할 수있는 것에서) CS를 연구하지 않은 전체 경향에 대해 더 궁금합니다. 그들은 다른 곳에서 현장으로 들어 왔으며, 실제 이론이 거의 없거나 전혀 없으며, 프레임 워크에 대한 경험이 있습니다
Veaviticus

@Veaviticus : 프레임 워크를 사용하는 것은 획기적인 학술 이론이 아닐 수 있지만 여전히 CS입니다.
DeadMG

0

글쎄, 죽었는지 여부는 논쟁의 여지가 있습니다!

사실 오늘날의 기술 시대에 대부분의 회사는 소프트웨어 자동화를 통해 실제 워크 플로 유형 작업을 해결하기 위해 인력을 고용합니다. 더 높은 출력으로 비즈니스를 더 빠르게 실행할 수있는 한 프로그램을 얼마나 우아하고 빠르게 작성할 수 있는지에 관심이 없습니다.

스트레스는 적은 시간에 더 많은 출력에 있습니다. (작물 / 식품의 상업화를 생각하십시오; 적은 비용으로 더 빠르고 더 빨리 성장하십시오). 기술계에서도 마찬가지입니다 (다음 새로운 아이디어).

이 시대에 지식은 과거에 비해 지식의 양과 접근성으로 인해 그 어느 때보 다 빠르게 움직입니다. 그 시절에는 생산량이 적었고 더 좋았고 이윤도 더 많았습니다. 이제 게임이 완전히 바뀌 었습니다. 고객 서비스 품질과 같은 것을보고 일반적으로 더 이상 지속되지 않습니다.

우아함과 효율성은 Google과 같은 기술 회사에 중요하지만, 그 장소조차 완벽하지는 않지만 앞으로 몇 년 동안 그 회사 중 한 곳에서 일함으로써 가까이 갈 수 있습니다.

인생에는 항상 절충이 있습니다. 당신은 항상 시간과주의를 기울이는 저임금 일자리를 찾을 수 있습니다. 또는 더 나은 지불을 위해 나머지 사람들과 함께 수영하고 완벽하지 않은 것을 무시하십시오. 이 깨달음이 당신에게 더 빨리 가라 앉을수록, 당신은 현실 세계를 위해 자신을 장비 할 수 있습니다. 나는 당신이 품질과 우아함을 무시하고 역학을 알아야한다고 말하고 있지 않습니다. 당신은 더 행복 할 것입니다 :)


0

내 생각에 미래에 가장 흥미로운 것들 중 일부는 컴퓨터 과학의 과학 부분, 특히 향상된 컴퓨터 비전 / 기계 학습 및 기타 sematisizing 알고리즘을 기반으로 할 것입니다. 이것들은 아마도 업계에서 앞으로 나아갈 것입니다 (예 : Microsoft Kinect를 가져 가십시오). 그러나 학계에서 이루어진 많은 연구와 진보를 기반으로 할 것입니다 (다시 말하면, Microsoft Kinect를 가져 가십시오).


0

저는 표준 일일 프로그래밍이 과학만큼 예술에 가깝다고 생각하지만 컴퓨터 과학의 과학 측면에 깊이 관심이있는 분야는 확실히 존재합니다. 예를 들어 회사 및 대학의 연구원. 과학에 전문적으로 참여하고 싶다면 박사 학위를 찾아야합니다. 그러나 나는 더 창조적 인 측면에 의지 할 필요가 있음에도 불구하고 교육의 과학 부분이 지속적으로 가치있는 것으로 나타났습니다!

자신이하는 일을 모르는 사람들은 언급 한 도구 중 일부를 사용하여 해킹 할 수 있지만 일반적으로 도구를 만들기 위해 실제 CS 사람들을 고용합니다. 실제로 자신을 밀기 위해 더 추상적이되어야합니다.

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