왜 우리는 대학에서 Java를 공부합니까? [닫은]


25

자바는 종종 학계에서 발견됩니다. 그 이유는 무엇입니까?


9
Microsoft 생태계와 마찬가지로 Java IDE의 라이센스 비용은 없습니다. 유니에 대한 학비가 더 많습니다.
mjhilton

16
뭐? Microsoft Visual Studio Express를 무료로받을 수 있습니다.
quant_dev

12
실제로 대부분의 경우 학생과 다른 모든 Microsoft 앱인 경우 Visual Studio를 무료로 사용할 수 있습니다.
Erin

5
당신이 바로 졸업 할 때 돈을 벌고 싶어서? real세계 에서 아무도 사용하지 않는 것을 4 년 동안 공부한다고 해서 학생이나 학생을 고용하려는 회사에게는 도움이되지 않습니다.

5
@JarrodRoberson은 일부 회사에서만 Java를 사용하므로 대학은 실제로 다양한 언어로 교육해야 실제 세계에 더 잘 대비할 수 있습니다. 다른 많은 사고와 개발 방법이있을 때 단지 자바 프로그래머가되어 버리고 싶지는 않습니다.
CaffGeek

답변:


73

대학은 충분히 잘 많은 (대부분은 아니더라도) 결정은, 예를 들면 등 그 사람의 좋아하는, 싫어하는 것, 의견, 맛, 그냥 주위를 돌고있는 것으로 알려져 누군가가, 텍사스 A & M 직원에 비얀 스트로브 스트 룹을 가지고있다; 그들의 커리큘럼이 C ++을 강조하는 경향이 있다는 것은 아마 놀랄 일이 아닙니다.

대부분의 대학은 조금 다릅니다. 첫째, 결정은 종종 학생들보다 교수진의 이익을 위해 훨씬 더 많이 결정됩니다. 많은 경우에있어서 가장 큰 기준은 "어떤 언어가 가장 적은 노력이 필요한가?"입니다. 그들 대부분은 또한 게으름에주의를 기울입니다. 그들은 배울 개념이 가장 적은 언어뿐만 아니라 (예를 들어) 새로운 것을 혁신, 업데이트 또는 포용하는 데 가장 느린 언어를 원합니다.

둘째, 대부분의 결정은위원회가 결정합니다. 이는 최종 결정이 실제로 원하는 사람이 거의 없음을 의미합니다.위원회의 가장 적은 구성원 (특히 가장 영향력있는 사람)이 특히 불쾌한 것으로 판단한 것입니다. 아이스크림 맛을 고르는 것과 같습니다. 하나는 딸기를 정말 좋아하지만 다른 하나는 딸기에 알레르기가 있습니다. 다른 사람은 초콜릿을 정말 좋아하지만 다른 사람은 그것을 견딜 수 없습니다. 또 다른 이들은 럼 건포도는 훌륭하다고 생각하지만, 다른 두 사람은 "럼"을 언급하는 것이 알코올 남용을 장려하는 것으로 해석 될 것이라고 우려합니다.

마지막으로, 비록 일반적으로 앞의 두 기준을 따로 생산하는 것입니다 무슨 대부분의 직접 반대로 실행, 그들은 일반적으로 필요 (또는 적어도 희망에서) 업계의 요구에 반응으로 볼 수 있습니다.

자바는이 세 가지의 교차점입니다.

  1. 그것이 구현하는 모든 개념은 1980 년까지 잘 알려져 있습니다. OOP가 무엇인지에 대한 가장 기본적인 개념을 넘어서는 것은 많지 않습니다.
  2. 무미, 무취, 무독성, 생분해 성, 정치적으로 올바른 선택입니다.
  3. 역사상 유일하게 오랫동안 존재 해 왔고 혁신이 덜 된 다른 언어는 SQL뿐입니다. COBOL과 Fortran은 빠르게 움직이는 대상이라고 부르지는 않지만 Java보다 혁신을 뛰어 넘었습니다.
  4. 널리 사용됩니다. 당신이 그것에 도달하면, 교수와 PHB는 비슷한 기준을 가지고 있습니다.

예를 들어, OOP가 무엇인지에 대한 가장 기본적인 개념보다 Java에 대해 알아야 할 것이 더 이상 없다고 말하는 것은 아닙니다.


이 답변에 대한 의견이 나뉘어져 있으므로 많은 의견이 여기에서 제거되었습니다.
표시 이름

1
FWIW, 나는 바닐라를 선호합니다.
Monica와의 가벼움 경주

나는 당신의 대답을 upvote에에 가입
user2445942

22

Java가 나오기 직전 90 년대 초에 컴퓨터 과학을 공부했습니다. 우리 교수들이 따르는 접근법은 다음과 같습니다.

첫해 : 파스칼의 프로그래밍 및 알고리즘에 대한 입문 과정. 왜 파스칼인가? 해킹을위한 시설이없는 프로그래밍 개념을 가르치기 위해 설계된 깨끗한 언어이기 때문입니다. 물론 우리 학생들은 당시 가장 인기있는 언어가 C이고 인기가 높아지는 새로운 언어 인 C ++가 있다는 것을 알고있었습니다. 그래서 우리는이 언어들에 대해 항상 읽고 토론했고, 우리가 직접 사용하는 소규모 프로젝트를 수행했습니다. 그래서 아이디어는 : 교실에서 우리는 진지한 이론 (Pascal)을하는 반면 집에서는 해킹 (C)하는 법을 배웁니다. :-)

두 번째 해에 우리는 C와 어셈블리 연습을하도록 운영 체제 과정을 가졌습니다. 교수는 우리에게 C에 대한 완전한 코스를 제공하지 않았습니다. (1) 첫 해에 이미 프로그래밍에 대한 코스를 가졌으며 (2) 프로그래밍의 개념을 아는 모든 컴퓨터 과학자는 책을 읽고 새로운 프로그래밍 언어를 배울 수 있습니다. 이 과정은 매우 순조롭게 진행되었으며 C와 어셈블리는 여러분이 직접 배우거나 다른 학생들과 복도에서 토론하는 실용적인 주제라는 것을 알았습니다.

3 학년 동안 우리는 프로그래밍 언어에 대한 과정을 가졌으며, 여기서 프로그래밍 언어의 다양한 패러다임 (제 국적, 기능적, 논리적, 객체 지향)을 연구하고 일반적인 개념과 구현 기술을 배우고 주요 프로그래밍 언어 (파스칼, C, Modula2, Simula, Lisp, C ++, Prolog). 강의 시작시 교수님이 말씀하신 내용 : 강의 마지막에 알고있는 프로그래밍 언어의 수에 대해 생각하여이 강의를 평가하지 말고 배운 모든 일반적인 개념과 그 방법에 대해 숙지해야합니다. 서로 관련, 그들이하는 것, 그들이 어떤 언어로 사용되는지. 그런 다음 특정 언어를 배우는 것은 책을 읽고, 기존 코드를보고, 특정 프로젝트에서 사용하려는 등의 문제입니다.

이 접근 방식이 매우 적절하고 효과적이라는 것을 알았습니다. 대학은 좋은 프로그래머를 준비하는 것이 아니라 프로그래밍과 프로그래밍 언어를 이해할 수있는 좋은 지식을 제공하는 데 목표를 두어야한다고 생각합니다. 좋은 프로그래머가되는 것은 그 부작용으로 올 것입니다. 나는 지금 Ada가 필요한 직업을 신청하는 것을 고려하고 있으며 전에 Ada에서 진지한 프로그래밍을 한 적이 없어도 두려워하지 않습니다.

자바 교육 문제로 돌아 가기. Java는 중립적이고 산업계에 가까운 언어를 사용하여 프로그래밍의 원리를 설명 할 수 있기 때문에 종종 교육에 사용되는 것 같습니다.

개인적으로 저는 여전히 첫 번째 코스에 Pascal 또는 유사한 언어를 사용합니다. 왜냐하면 Java / 객체 지향 언어로 밀접하게 통합 된 제어 구조와 데이터 구조를 구별 할 수 있기 때문입니다. 제 생각에 파스칼은 프로그래밍의 기본 개념에 대해 점진적으로 소개 할 것입니다.

또한 컴퓨터 과학자 (및 좋은 프로그래머)는 스택, 힙, 매개 변수 전달, 메모리 할당, 포인터 또는 기본 제공 기능을 사용하지 않고 추상 데이터 유형을 구현하는 방법과 같은 기본 메커니즘 / 런타임 구조에 대해 알고 있어야합니다. 언어 (목록, 세트 등). 자바는 이것을 프로그래머들로부터 멀어지게한다 (물론 좋다). 그러나 초보자는 이것에 대해 배워야한다. 아마도 Java에서 첫 번째 프로그래밍 과정을 거친 후 프로그래밍 언어 개념에 대한보다 일반적인 과정을 수강해야합니다.

이것은 단지 내 경험과 의견입니다.


1
내가 1 학년에 유니에있을 때 우리는 프로그래밍 과정 (컴퓨터 시스템 과정의 일부 조립)을 위해 Ada를했습니다. 2 학년은 비슷한 언어 스타일이었습니다. 3 년째에, 우리는 "프로그래밍의 개념을 아는 모든 컴퓨터 과학자는 책을 읽고 새로운 프로그래밍 언어를 배울 수 있어야한다"라고 정확하게 들었습니다. 연말까지 우리는 C, C ++, Java, 그리고 당신이 프로젝트에서 어떤 언어를 사용했는지 자발적으로 배웠습니다. (파이썬이었습니다.) 그것은 실제 세계를 위해 얻은 최고의 준비였습니다.
Amy

(+1) 파스칼 관련 프로그래밍 언어는 아버지 "Niklaus Wirth"가 교육용으로 신중하게 설계하기 때문에 프로그래밍 교육에 사용하는 것이 좋습니다. ;-)
umlcat

@ umcat : 감사합니다. 예, 규칙을 어 기고 해킹 할 수있는 C 또는 C ++를 사용하는 것이 좋습니다. 그러나 규칙을 어기 전에 어떤 규칙을 어 기고 있는지 알아야합니다. 이를 위해 Pascal과 같은 깨끗한 프로그래밍 언어를 사용하여 "이상적인 세계"에서 프로그래밍하는 방법을 배우는 것이 매우 유용합니다. 그런 다음 최소한 해킹 할 때 수행중인 작업을 알고 있습니다. :-)
Giorgio

@Giorgio : 학생들에게 파스칼을 먼저, 나중에 C / C ++, 그리고 나중에 Java를 배워야한다고 생각합니다. 나는 단지 하나 또는 다른 것을 의미하는 것이 아니라, 모든 것을 특정한 순서로 의미합니다. 일부 학교는 다른 학교를 선호하여 가르치지 않고, PD는 또한 C와 Java에서 일합니다. 도움이
되었으면 좋겠어요

@ umcat : 전적으로 동의합니다. 또한 Lisp, Haskell, Prolog도 추가 할 것입니다. 프로그래밍 패러다임이 많을수록 좋습니다.
Giorgio

10

Java가 나왔을 때 학교에있었습니다. 그리고 우리 대학은 거의 밤새 바뀌 었습니다. 사람들은 학계에서 Java를 제대로 알지 못했습니다. 나는 학교가 나왔을 때 주니어 였고, 고등학교 때까지 거의 모든 학계가 교과 과정을 바꾸기 위해 빠르게 움직이고있었습니다. 우리 대학뿐만 아니라 모든 곳에서. 정말 빠르다. 두 번째 소개 과정은 Pascal이며 1 년 안에 빠르게 Java로 전환되었습니다. 왜 그렇게 빨리 변환 했습니까? 두 가지 큰 이유.

한 학계에서는 이론과 알고리즘을 가르치기를 원합니다. 많은 경험이 필요하지 않은 알고리즘을 쉽게 배울 수있는 언어가 가장 좋습니다 : 체계, 파이썬, 자바, 스몰 토크 등. 당시 스크립팅 언어는 고용주들에 의해 싸고 빠르며 더러운 것으로 찌그러진 2 급 시민이었습니다. 학계에서는 이들을 모방 고양이로 보았지만 고용주가 원하는 것은 학계와도 동요했습니다.

그것은 우리에게 다음 이유를 가져옵니다. 고용주는 특정 언어 경험과 C / C ++ 당시의 언어를 원합니다. 그러나 C / C ++는 배우기 위해 많은 경험을 필요로하며, 많은 모퉁이 경우와 산만하지 않은 경우가 있습니다. 우리는 C / C ++로 과정을 배웠지 만 더 낮은 레벨에서는 배우지 않았습니다. 당시 학생들은 C / C ++ 전문가가 아니기 때문에 CS 프로그램에 열중했습니다.

자바는 학계만큼이나 빠르게 업계를 휩쓸고 있었다. 결국 학계는 그들이 원하는 것을 얻었습니다. 배우기 쉬운 고급 언어 및 언어 고용주가 원했습니다. 너무 완벽했습니다. 내가 떠난 지 3 년 후에 친구가 학계로 돌아 왔는데, 그는 모든 CS 과목에서 Java 책을 찾을 수 있다고 말했다. 이것이 자바가 학계를 얼마나 빨리 장악했는지입니다.

개인적으로 Java가 CS를 멍청하게 생각하지 않았다고 생각합니다. 학생들이 CS를 공부하고, 오픈 소스에 참여하고, 학교에있는 동안에도 일자리를 찾을 수 있기 때문에 실제로 좋은 일이라고 생각합니다. 저는 여전히 CS 학생으로서 많은 언어를 공부해야한다고 믿습니다. Java만이 아닙니다. 그러나 그들이 모두 파이썬을 사용한다면 Joel도 파이썬을 싫어할 것입니다.


학교가 90 년대 중반에 여전히 파스칼을 사용하고 있었다면 어쨌든 정밀 검사로 인해 기한이 지났습니다. 나의 첫번째 CS 수업은 Pascal에 있었다. 그러나 그것은 1980 년이었다! 흥미롭게도 C (OS 내부 용), Modula (컴파일러 디자인), Prolog 및 일부 대학원 과정은 Ada를 사용하는 초급 과정이었습니다. 나는 왜 학교가 아직도 이것을하지 않는지 이해하지 못한다.
TMN

1
1995 년 말까지 Pascal을 거의 또는 모두 사용했으며, 일부는 Modula로 이전했습니다. 광산은 1995 년에 노인들을 위해 파스칼을 유지하면서 노인들에게 C ++을 도입하기 시작했다. 나는 그들이 Pascal을 Java로 대체했다고 생각합니다 (많은 작업은 하드웨어와의 상호 작용을 포함하기 때문에 저수준 언어가 필요하므로 C ++은 여전히 ​​아마도 있습니다).
jwenting

우리는 Pascal 입문 과정 후에 C / C ++를 꽤 많이 사용했습니다. 프롤로그, LISP, 스킴, 스몰 토크, 어셈블리는 모두 중간 레벨 클래스에서 사용되었습니다. 1990 년대에 정부의 기술 소비의 중요성이 줄어듦에 따라 Ada는 단계적으로 폐지되었으며 단지 1990 년대 후반에 언급되었다. Java의 위험은 Java와 관련이 없지만 단일 문화와 학습과 관련이 있다고 생각합니다. 저는 지금 Flex 개발자이며 Adobe는 지난 주에 그와 함께 생활 할 수있는 능력을 종료했습니다. 1 개 언어를 사용하지 않은 오랜 역사를 가지고 있기 때문에 걱정하지 않습니다. Java, Ruby, Php, Python이 있습니다.
chubbsondubs

8

다음과 같은 몇 가지 이유가 있습니다.

  • 직업 시장에서의 유비쿼터스-대학에서 학생들이 취업하기를 원하면 (그리고 더 많은 학생들을 대학에 추천 할 경우) 관련 언어를 가르쳐야합니다.
  • 커리큘럼 단순화
  • 채점하기 쉽고 숙제를 쉽게 수행 할 수 있습니다.
  • 가비지 수집으로 포인터 및 수동 메모리 관리를 가르 칠 필요가 없습니다.

같은 이유로 C #을 가르치는 많은 학교가 있습니다. 더 많은 이유가 있으며, 그중 일부는 개별 학교에 더 구체적입니다. 본질적으로 Java는 객체 지향 "BASIC"이되었습니다.


BlueJ를 사용하는 Java 첫 번째 객체와 같은 OOP를 단순화하는 훌륭한 Java 서적도 있습니다. 그러나 C #에서는 처음부터 당신을 데리고 좋은 방식으로 배우는 그러한 학습 책을 보지 못했습니다. 동의하니?
Goma

나는 할 것이다. 가르치는 것은 매우 어려운 일이며, 교사들은 여전히 ​​가르치는 가장 좋은 방법을 배우고 있습니다. Strayer와 같은 많은 온라인 학교는 C #을 유지하고 벽돌 및 morter 학교는 Java를 선호합니다. 아마도 온라인 학교는 이미 일하고있는 학생들을 수용하기 때문일 것입니다. 기본 프로그래밍 서적은 모든 언어에 적용 할 수 있으므로 사용 가능한 자료가 있습니다.
Berin Loritsch

"쓰레기는 수집되어 포인터와 수동 메모리 관리를 가르 칠 필요가 없습니다." 소프트웨어 엔지니어로서 포인터 및 메모리 관리에 대해 모르거나 작동 방식을 모르는 경우 매우 중요한 지식이 없습니다.
rightfold

Java에는 *구문이 없을 수 있지만 포인터에 대한 기본적인 이해가 없으면 사용하기 가 매우 어려울 수 있습니다.
dan04

@WTP와 그 때문에 Java는 종종 초급 과정 (이전에 파스칼 또는 모듈라가 사용 된)에 사용되며 나중에 C (++)가 소개됩니다.
jwenting

6

필자는 Joel Spolsky의 The Perils Of Java Schools 게시물을 좋아 합니다. 나는 Berin Loristch권력 과정 을 단순화하고 실제 세계에도 적용 할 수 있다고 생각 합니다.

"컴퓨터 과학 학위는 프로그래밍을 배우는 정도가 아니라 이론을 배우는 것"이라고 여러 번 들었습니다. 이론이 배우고있는 한, 언어는 반드시 문제가 될 필요는 없습니다. Java는 비교적 쉽게 선택할 수있는 언어이며 모든 것을 뒷받침하는 이론을 배우는 데 더 많은 시간을 할애 할 수 있습니다. 이것이 MIT가 Scheme을 사용하는 이유 중 하나입니다 (그래서 들었습니다).


2
Mit는 몇 년 전에 Scheme 사용을 중단했습니다 -cemerick.com) / 2009 / 03 / 24 /…
nate c

@nate c-나중에 확실하지 않았습니다. 여전히 파이썬은 배우기 매우 쉽습니다. 그래도 링크 주셔서 감사합니다!
Jetti

수업을 가르치면 학생들을 완전히 괴롭힐 것입니다. 본인의 프로그래밍 언어를 작성하는 것이 좋으며 수업 시간 동안 만 해당 프로그래밍 언어를 사용할 수 있습니다.
berlinbrown2

1
@Berlin-그렇기 때문에 선생님이 아닌 것 같습니다 :)
Jetti

3

위에 주어진 많은 답변은 좋은 답변이지만, 무언가를 생략합니다.

Java는 다중 플랫폼 언어입니다. 한 학생은 자신의 Mac, 다른 학생은 PC, 다른 학생은 Unix 계정을 사용할 수 있습니다. 동일한 코드가 동일한 작업을 수행합니다. 교사와 학교의 IT 부서가 얼마나 쉽게 지원할 수 있는지 생각하십시오.

이것이 나왔을 때 Java의 진정한 중요성이었습니다. 농담은 "한 번의 코드, 모든 곳에서 디버그"였지만 실제로 하드웨어와 운영 체제를 빼앗 았습니다.


아마도 이것은 C, C ++ 또는 C #에서 Java를 선택한 이유를 설명하지만 Ruby와 Python (다른 것들 중에서도)은 크로스 플랫폼에서 잘 작동합니다.
Eric Wilson

좋은 지적. CS 부서는 여러 가지 이유로 강력한 유형의 언어를 선호한다고 생각합니다. 또한 Java는 미국에서 선두를 달리기 시작했습니다. Ruby는 1999 년 이후까지 여기에서 실제로 만들지 않았으며, 2.0이 나올 때까지 Python은 꽤 제한적이었습니다.
Matthew Flynn

1

교수들은 다음과 같은 이유로 자바를 사용하여 가르치고 있다고 들었습니다.

  • 최신 패러다임을 사용합니다 (OOP, 일부 제네릭)
  • 매우 장황하지만 문법적으로 매우 간단합니다.
  • 고차 함수, 클로저, 카레 또는 연속과 같은 고급 개념은 여전히 ​​기본 개념을 배우는 사람들을 혼란스럽게 할 수 없습니다.
  • 그것을 위해 작성된 많은 도서관
  • gc가 있기 때문에 학생들은 메모리 누수 디버깅에 어려움을 겪지 않습니다.

개인적으로 저는 Scheme을 사용하여 가르 칠 때 버클리에서 CS를 가져 가서 기쁩니다. 나는 언어의 우아함을 알지 못했지만 몇 년이 지난 후에야 실제로 언어였습니다.


1

작은 배경

학교에서 제공하는 유일한 Java 수업을 수강했습니다. 이것은 90 년대 후반에서 2000 년 초까지였다. 자바는 성장하고 있었지만 거의 이륙하지 못했다. C의 많은 개발로 인해 Java를 시작하고 실행하는 데 필요한 모든 상용구 코드가 약간 실망했습니다. 나는 내 임무에 집중할 수 없었다. "open"으로 파일을 열 수 없었습니다. 클래스를 정의 한 다음 수입 등을 정의해야했습니다.

저는 컴퓨터 공학을 전공했습니다. 먼저 어셈블리 프로그래밍을 한 다음 C와 C ++, Scheme, 그리고 하나의 Java 과정을 수강했습니다. 주로 C 중심의 학교 프로그램이었습니다. 알고리즘 클래스는 C를 사용하여 가르쳐졌습니다.

내가 산업에 들어갔을 때, Java는 분명히 지배적 인 선수였습니다. 백엔드 COBOL 시스템에서 Java 웹 비즈니스 애플리케이션으로 변환하는 동안 유일하게 플레이어였습니다. Java는 2000 년 초 비즈니스 세계에서 큰 발전을 이루었습니다.

동시에 모든 Java 프레임 워크를 알지 못했지만 Java 환경을 코딩하고 적용하는 방법을 알고있었습니다. 훌륭한 Java 코딩 표준에 대한 교육 과정을 수강했다면 더 나은 Java 스타일이나 Java 생태계에 대한 지식으로 시작했을 수 있습니다.

돌이켜 보면, 나는 그것이 중요하지 않다고 생각합니다.

귀하의 질문에 대답하기 위해 : 왜 우리는 대학에서 Java를 공부합니까?

Java는 반드시 가르쳐야하지만 모든 과정에서 사용되는 것은 아닙니다.

컴퓨터 과학을 배우고 있다면 대학의 어느 시점에서 Java를 배워야합니다. 비즈니스 세계에서 인기가 있습니다. Java와 C #을 배워야합니다. 나는 자바를 입문 프로그래밍 과정으로 가르치지 않을 것입니다. 그리고 Java가 모든 코스에서 사용되는 기본 언어는 아닙니다.

자바 비판에서 :

자바는 많은 비판을 받고 있으며 항상 그렇습니다. "Java가 엔터프라이즈에 준비되어 있습니까?"라는 물음표와 함께 Java를 언급하는 Java 잡지를 읽었습니다. Java 플랫폼은 여전히 ​​널리 사용되는 플랫폼입니다. 그러나 대부분의 일반적인 프로그래밍 작업의 경우 Java가 정상적으로 작동합니다. 그리고 Java를 사용하는 데 큰 문제는 없습니다. 그것은 당신의 스킬 셋을 해치지 않을 것입니다. 아래에서 진행되는 작업을 배우지 않고 Java 라이브러리에 의존하는 경우가 있습니다. 그러나 Java는 어떤 종류의 뇌 손상도 일으키지 않습니다 (일부 개발자는 실제로 이것을 사실이라고 생각합니다).

또한 개발자가 C 또는 C ++를 공격하지 않는 이유는 무엇입니까? 또는 적어도 C ++. 명령형 프로그래밍 패러다임은 매우 유사합니다. 그리고 C ++로 웹 응용 프로그램을 작성하는 것을 고려하지 않았지만 Java로 할 수도 있습니다.

커리큘럼을 설정하는 방법은 다음과 같습니다.

  1. 입문 과정 : 구성표, Python, 어셈블리 언어, C (모두 3 개)
  2. 알고리즘 코스 : C, Haskell, Python (모두 3 개)
  3. 운영 체제 과정 / 네트워킹 과정 : C / C ++
  4. GUI 개발 : Java Swing, Win32의 C ++
  5. 객체 지향 프로그래밍 : (이것은 까다로워 OOP 코스가 없습니다.) C ++, 자바, C #
  6. 기업? 개발 : Java, C #, Python
  7. 언어 디자인, 컴파일러 : Haskell, Scala, C, Assembly, Scheme, Common Lisp, Prolog.

커리큘럼에 나와있는 언어는 매우 일반적입니다. 많은 학교들이 문제없이 여러 언어를 가르치고 있습니다. 업계에서는 다양한 프로그래밍 언어를 사용하게됩니다. 들어 본 적이없는 언어를 사용하게됩니다.

학교에서 Java 주제는 그들이 당신을 Java로부터 완전히 보호하고 싶거나 Java 만 가르치기를 원하지 않는다면 문제가되지 않습니다. 두 경우 모두 학교는 정당하지 않다.

(죄송합니다 루비 랭)


(-1) "어셈블리 언어"가 "입문 과정"에 비해 너무 복잡합니다. 나는 "가르치지 마라"라는 뜻이 아니라 "나중에 가르 칠 것"이라는 뜻입니다
umlcat

1

죄송합니다. 지루한 답변 만 :

(1) 다음을 의미 했습니까?

"왜 우리는 최초의 프로그래밍 언어로서 대학에서 Java를 공부합니까?"

(2) 아니면 의미합니까?

"어떻게 Java보다 다른 프로그래밍 언어를 배우더라도 대학에서 Java를 공부하는 이유는 무엇입니까?"

당신이 정말로 두 질문을 의미하는 것 같습니다.

(1)의 경우 :

Java (또는 .NET C # 및 Visual Basic)를 첫 번째 프로그래밍 언어로 가르쳐야한다고 생각하지 않습니다. 오래되고 쓸모없는 것처럼 들리더라도 Structured & Modular Pascal이 가장 먼저되어야합니다.

많은 사람들은 "과대 광고"또는 "트렌드"때문에 사람들에게 객체 지향 프로그래밍 또는 기능 프로그래밍을 즉시 가르쳐야한다고 생각합니다.

구조화 된 파스칼을 비슷한 버전이 아니라 "Object Oriented Programming"의 작은 버전으로 배웁니다. 나는 구조화 된 프로그램을 하나의 작은 객체로 본다.

그 후에는 계속해서 기능 언어와 오브젝트 파스칼을 제안합니다.

그리고 나중에 C, C ++, C #, VB.Net, Java.

Java 또는 C #을 좋아하지 않는 주된 이유는 첫 번째 프로그래밍 언어로서 "포인터", "포인터에 대한 포인터"및 "개체"자체 ( "참조") 개념이 혼합되어 있기 때문입니다.

나는 학생들이 그 개념들 사이의 차이점과 유사점을 염두에 두어야한다고 생각합니다. Java에서 Strings 객체를 비교하는 것이 그 이상한 예입니다.

String A = "Mars";
String A = "Venus";

// pointer comparison or object comparison ???
if (A == B)
{
  DoSomething();
}

(2)의 경우 :

Java 또는 C #은 학교에서 가르쳐야한다고 생각합니다. 몇 가지 좋은 기능이 업데이트되어 있으며 실제로 실제 사용됩니다.


0

컴퓨터 과학을 배우고 있다면 대학의 어느 시점에서 Java를 배워야합니다. 비즈니스 세계에서 인기가 있습니다. Java와 C #을 배워야합니다. 나는 자바를 입문 프로그래밍 과정으로 가르치지 않을 것입니다. 그리고 Java가 모든 코스에서 사용되는 기본 언어는 아닙니다.

더 이상 동의 할 수 없습니다. Java는 내 대학에서 CS & E 프로그램에 참여하기 위해 취해야 할 언어였습니다. 자바는 가르치기가 매우 쉽다. "비 프로그래머"가 배울 수있는 특정 개념으로 자신을 제한 할 수 있기 때문입니다.

또한 Java를 입문 프로그래밍 과정으로 절대 가르치지 않을지 알 수 없습니다. 당신은 기본적으로 절대적으로 그것을 가르치지 않을 것이라고 말했습니다 습니까?

간단한 이유는 이미 설명되었습니다. Java에는 라이센스 비용이 없습니다. 기본 테스트 편집기를 사용하여 가르 칠 수 있습니다. 확실히 잘못된 이유로 사용되었습니다.

이전 답변에 동의하지 않습니다 .Java가 학생들에게 "멍청한"것을 전달하지 않았다는 것은 실제로 C ++의 배열 및 목록과 같은 실제로 간단한 개념에 문제가 있음을 보여줍니다.


나는 무지가 "멍청한"것과 같지 않다는 것을 지적 할 것이다. Java를 "통과하는"사람들은 이러한 "간단한 개념"을 배우지 않았기 때문에 알지 못할 수 있습니다. 그것은 그들이 그것을 알아 내기 위해 시간이 걸린다고해서 그것을 얻지 못한다는 것을 의미하지는 않습니다.
Jetti

0

C 에서 Java 로의 전환 이 잘못된 시간에 발생했습니다. .

2000 년경 어딘가에. 나는 대학에서 마지막 C 수업 을 갔다.

  • C ++에는 초보자를 혼동하지 않는 기능너무 많습니다 . (그리고 여전히 그렇습니다. 일부를 추가 할 계획입니다.)

  • .NET은 충분히 성숙하지 않았 으며 오늘날보다 훨씬 비쌉니다.

  • Objective C는 오래 되었고 Apple의 사용량은 레이더 아래로 날고있었습니다 ( iPhone없었 습니다)


당시 다른 .NET 문제? 이식 가능한 런타임이 없습니다 . 사용 가능한 모노없었습니다 .
ZJR

어떤 텍스트 편집기 중립성 없습니다. ( 텍스트 편집기 전쟁 은 추악하지만 실제입니다) 그리고 학생들이 보일러 플레이트에 빠지게하는 기본 IDE입니다 .
ZJR

BTW, 나는 Objective C 길을 택한 세계를 선호했을 것 입니다 .Apple이 그 야구장에서 유일한 아이는 아니며 비즈니스 모델조차도 약간 덜 미치게 될 것입니다.
ZJR

0

나는 실제로 내 관점을 다루는 답변이 보이지 않기 때문에 여기에 답변을 추가해야한다고 생각합니다.

나는 취미 프로그래머입니다. '컴퓨터'와 '프로그래밍'에 관해서는 곡선보다 앞서있었습니다. 학부생 인 2007 년에 학사 학위를 마쳤으며 약 2 년 후인 2009 년에 석사를 마쳤습니다. 어셈블리, QuickBASIC, C, C ++, Java, PHP, Perl, Python, BASH 스크립트, Javascript, COBOL 등 다양한 언어로 작업했습니다. .

학생들에게 프로그래밍을 가르치는 데 사용되는 언어 인 IMHO는 현재 우리가 살고있는 시대의 지표입니다. 예를 들어, 1980 년대에 Assembly는 저급 언어 였고 C는 고급 언어로 간주되었습니다.

1990 년대에 C ++, Java, Perl 및 그와 같은 언어는 주로 C보다 훨씬 높은 수준을 유지하고 빠른 개발 원칙을 구현했기 때문에 중요성을 얻었습니다. 그래서 그들은 CS 학생들에게 어셈블리를 가르치는 것을 멈추고 알고리즘을 표현하는 방법으로 C를 가르쳤습니다. 지난 10 년 동안 C가 너무 낮은 수준의 언어로 간주되어 알고리즘의 본질을 효과적으로 그리고 너무 많은 '시스템'노하우를 포착하지 못하는 것으로 변경되었습니다. CS 커리큘럼의 초점이 실용적보다 더 '이론적'이어야하고 누군가가 알고리즘을 작성하려고 할 때마다 메모리 할당과 포인터 산술로 혼란스러워지면 실제로는 매우 중요합니다. 어딘가에.

오늘날에도 Masters CS 프로그램을 사용하는 경우 학생들이 시스템 수준의 응용 프로그램을 프로그래밍 할 수 있어야하는 특정 '시스템'요구 사항 (미국에서 가장 작으며 미국 대학에서는 크게 다르지 않아야 함)을 완료해야합니다. 어떤 경우에는 실제로 커널 수준 해킹만큼 깊이가 요구 사항을 통과합니다. 비록 C는 아니지만 학교에서 가르치는 사실상의 언어 시스템이나 고성능 컴퓨팅 또는 그러한 틈새 시장을 전문으로하고 싶다면 관련이 있습니다.

또 다른 요점은 C와 관련하여 많은 분야가 필요하다는 것입니다 .Java와 같은 언어는 그러한 제약에 대해 약간 완화되어 있습니다. 이를 통해 RA / TA가 학생의 프로그램을 디버깅하기 위해 GDB를 시작하지 않아도 과정을보다 쉽게 ​​수행 할 수 있습니다. :)


0

그 중 상당 부분이 업계에서 사용되고있는 것이라고 생각합니다.

내 CS 프로그램에는 산업 기술 자문위원회가 있었고 현지 기술 및 항공 회사의 선임 직원으로 구성되었으며 커리큘럼에 많은 정보를 제공했습니다. 인트로 CS 수업은 IAB의 결정에 따라 내가 시작한 해 (1986)에 C를 선호하여 파스칼을 떨어 뜨렸다. 마찬가지로, 항공 우주 회사가 DoD 작업에 Ada를 사용해야했기 때문에 일부 고급 과정에서 Ada를 가르치라는 압박이있었습니다.

Java의 유비쿼터스, 특히 Android 기기가 등장하고 있습니다. 그것은 교훈적인 관점에서 엉망이지만 C도 마찬가지입니다.


0

학생들은 더 적은 학생이 코스 자체를 실패하는 IMHO 과정에 실패하기를 희망하기 때문에. 어쩌면 아무도 여기에서 대학 학위를 더 이상 진지하게 받아들이지 않는 이유 중 하나 일 것입니다.

Java는 언어가 너무 단순하여 PC에 자원 패러다임이 제한되어 있다고 가르치지 않습니다. 동시에 "다른 추상화 계층으로는 해결할 수없는 것은 없다"는 생각의 선으로 작용한다.

예, OOP 개념과 장난감 문제에는 좋지만 잘못된 각도에서 문제에 접근하는 방법을 알려줍니다. 여기에 깔끔한 구조를 사용하고 나머지는 조이십시오.

그러나 학계는 AI, OWL 및 기타 장난감 기술에 대해 꿈꾸는 것으로 유명합니다. 그들이 그러한 것들을 계속 연구하는 동안 때로는 누군가가 놀라운 것을 발명하지만, 훌륭한 개발자가 되려면 독립적으로 배워야합니다.

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