왜 많은 기관에서 Java가 링구아 프랑카입니까? [닫은]


22

편집 : 처음 에이 질문은 자바를 강타하고있는 것 같습니다.이 시점에서 조금 생각합니다. 그러나 내가하려고하는 더 큰 요점은 하나의 언어가 모든 문제에 대한 모든 솔루션으로 선택되는 이유입니다. Java는 내가 사용하는 것이므로 여기에서 이길 수는 있지만 Java를 새로운 것으로 추출하려는 의도는 아닙니다. :)

대부분의 학업 환경에서 Java를 좋아하지 않습니다. 언어 자체가 나쁘다는 것은 아닙니다. 여러 가지 매우 바람직한 측면이 있습니다. 가장 중요한 것은 대부분의 플랫폼에서 재 컴파일하지 않고 실행할 수 있다는 것입니다. Next App ^ TM 용 언어를 사용하는 데 아무런 문제가 없습니다. (개인적으로하는 것이 아니라 디자인이 열악한 것이 아니라 경험이 적기 때문입니다.)

Java를 언어로 사용하여 고급 CS 과정을 가르치는 것은 낭비라고 생각합니다. 저의 많은 학생들이 쓰레기 수거되지 않은 세상에서 일하는 법을 모르기 때문에 그만한 가치가있는 프로그램을 만들 수 없습니다. 프로그래밍하려는 기계를 기본적으로 이해하지 못합니다. 누군가가 가비지 수집 된 세계 밖에서 일할 수있을 때, 내부에서 일할 수 있지만 그 반대 일 수는 없습니다. GC는 목발이 아닌 도구입니다. 그러나 컴퓨터 과학 학생들을 가르치는 데 사용되는 방식은 목발입니다.

컴퓨터 과학은 단일 언어에 맞춘 전체 과정을 가르치지 않아야합니다. 학생들은 모든 좋은 디자인은 관용적 인 자바 디자인이고, 객체 지향 디자인은 유일한 방법이 될 수있는 유일한 방법이라는 생각으로 떠납니다. 졸업생이 기계를 더 잘 이해할 수 있도록 가비지 수집 언어가 아닌 다른 언어를 가르치는 데 사용해야합니다.

존경받는 기관의 CS에서 PHD를 가진 사람이 종이 봉지에서 벗어날 수없는 것은 당혹스러운 일입니다.

더 나쁜 것은 실제로 일이 어떻게 작동하는지 이해하는 CS 교수와 이야기 할 때 우리는 Java로 모든 것을 수행하여 학생들에게 장애를 겪고 있다는 느낌을 공유한다는 것입니다. (위의 언어를 다른 언어로 바꾸면 동일합니다. 일반적으로 단일 언어를 사용하는 것이 Java 자체가 아니라 문제입니다)

전체적으로, 나는 더 이상 어떤 종류의 학위도 존중할 수 없다고 생각합니다. 주변 사람들이 fizzbuzz 문제에서 벗어날 수있는 방법을 프로그래밍 할 수 없을 때.

왜 / 어떻게 이렇게 되었습니까?


9
걱정마 오라클에게 절반의 기회를주고 상황을 개선 할 것입니다.) 안드로이드와 아파치에 대한 그들의 소송은 개발자를 멀어지게하는 시작에 불과합니다. 나는 미래 시장을 예상하면서 파이썬을 가르치기 시작하는 신호로 위의 내용을 취한 기관에서 가르칩니다.
SamGoody

3
어떤 학업 환경을 언급하고 있습니까? CSci 학생들이 한 가지 언어 만 배울 것으로 예상되는 곳은 어디든지 모릅니다. (신중 전공 및 클래스를 포착,하지만 당신은 적어도 두 개의 서로 다른 언어를 사용하려는 경우 마지막으로 내가 학교에서했다, 당신은 C와 계획에 의해 입수했습니다 수, 나는 생각합니다.)
데이빗 쏜리

16
L1 캐시 작동 방식을 설명 할 수 있습니까? ALU를 설계 할 수 있습니까? 맥스웰 방정식을 설명 할 수 있습니까? 마더 보드의 열역학적 특성은 어떻습니까? USB 드라이브를 만들 수 있습니까? 컴퓨터 작동 방식을 알고 있습니까? 아니면 당신의 관심사에 적합한 추상화 수준을 고르고 거기서 나왔습니까?
MetricSystem

5
"프로그래밍중인 기계를 기본적으로 이해하기 위해"메모리 관리를 이해해야한다고 결정하는 것은 완전히 임의의 수준입니다. 관심있는 문제를 이해할 필요가 없다면, 관심있는 것을 공부하는 데 시간을 보내는 것이 더 좋습니다 (아무도 모든 것을 배울 시간이 없기 때문에). 그리고 Java 프로그래머가 메모리 관리를 배워야하는 이유에 대한 모든 주장은 모든 사람이 원자 물리학을 알아야 무엇인가를 이해할 때까지 무한대로 확장 될 수 있습니다.
MetricSystem

7
또한 밀짚 맨 논쟁이있는 사람이라면 Java만을 프로그래밍 언어로 제공하는 단일 CS 프로그램에 대해 들어 본 적이 없다는 것을 알고 있습니다.
MetricSystem

답변:


30

이것은 Java 문제가 아니며 교습 문제입니다. 프로그래밍 방법을 모르는 것은 언어 장애가 아니라 학생의 실수입니다. 모든 문제, GC, 기본 기계 지식, 상황이 어떻게 작동하는지에 대해서도 마찬가지입니다.

가비지 수집에 대한 귀하의 주요 불만은 저를 약간 던졌습니다. C 또는 C ++ 가비지 수집을 수행하지 않는 한 일반적으로 문제가되지 않으며 매우 좋습니다. 오히려 그들은 모두 집회를 배우겠습니까? 엄격한 고급 언어는 교육에 매우 유용합니다. 다른 고급 언어 (PHP, Ruby, Python, Perl)에 혼동되는 언어 "설탕"이 없어도 필요할 때 라이브러리, 패키지 및 기타 기능의 유연성을 제공합니다.


5
더 높은 수준의 언어를 가르쳐서는 안된다는 말은 아닙니다. 그러나 나는 더 낮은 수준 (C 또는 Fortran 또는 다른 시스템 프로그래밍 언어 순서)을 가르쳐야한다고 말하고 있습니다. (C보다 낮은 수준은 단일 머신 아키텍처에만 적용되는 수준보다 낮기 때문에 유용하지 않습니다.) 모든 CS 졸업생이 훌륭한 저급 프로그래머라고 말하지는 않습니다. 그러나 낮은 수준의 문제에 직면하면 주변의 모든 학생들이하는 것처럼 스퍼터링하고 죽지 말아야한다고 말하고 있습니다.
Billy ONeal

3
@ 빌리 : 낮은 수준으로 내려 가면 초기 학습 수준이 어렵습니다. C ++ / C 코드를보고 머리를 감싸는 재미있는 시간을 보내고 있습니다. 기적을 기대하지 말고 천사도 기대하지 마십시오. 프로그래머 는 문제의 수준에 상관없이 모두 "스퍼터링 및 죽을" 수있는 능력이 부족한 상태에서 운전해야합니다 .
Josh K

5
@Josh : 충분히 공평하지만 적어도 하나의 다른 프로그래밍 환경에 대한 IMHO 공식 노출 은 CS 학위를 받아야합니다. 학위는 "Java를 이해합니다"라고 말하지 않고 "CS를 이해합니다"라고 말합니다. 이 둘은 동일하지 않으므로 Java (또는 모든 언어)를 단독으로 사용하여 CS를 완전히 이해할 수 없습니다 . (BTW, +1)
Billy ONeal

2
@JoshK : 낮은 수준에서 디버깅 할 수 없으며, 작성한 코드의 의미에 대해 적절히 추론 할 수있는 능력이 크게 줄었습니다.
메이슨 휠러

1
Java를 배우고 포인터를 사용해야하기 때문에 C ++ 또는 C에 무서워하는 프로그래머를 알고 있습니다. 포인터로 프로그래밍 할 수없는 사람이 실제 프로그래머로 간주 될 수 있는지 모르겠습니다. 결국 모든 컴퓨터와 런타임은 여전히 ​​레지스터, 주 메모리, 스택, 힙과 관련된 기본 아키텍처를 기반으로합니다. 따라서 C ++보다는 Java로 프로그래밍하는 것을 선호합니다 (메모리 관리에 신경 쓸 필요가 없다면 작업을 수행하는 것이 훨씬 쉽습니다). 나는 교육이 Java로 제한되어서는 안된다는 데 동의합니다.
조르지오

12

대학이 정말로 이것을하고 있습니까? 아니면 나쁜 면접 후보를 얻을 때 사람들이 얻는 인식입니까?

4 년 전 CS 학위를 받았으며 Java가 인트로 클래스에 사용되었지만 그 이후에는 특별히 강조되지 않았습니다. 머릿속에서 핵심 필수 과정을 위해서는 Java, C, C ++, SML (기능적 프로그래밍 언어), 어셈블리, MATLAB 및 CAST (회로 설명 언어)를 학습해야했습니다. 이것은 모든 수학 및 이론적 CS 과정과 물론 당신을 전체 무리에 더 많이 노출시킬 수있는 선택적인 CS 과정을 고려하지는 않습니다. 여러 대학의 친구들과 대화를 나눈 결과, 그들이하고있는 일이 크게 다른 것처럼 들리지 않았습니다.

자바만을 가르치는 대학이 있다면 그것은 참으로 비극입니다. Java가 나쁘기 때문이 아니라 프로그래머가 사용할 수있는 많은 도구 중 하나 일뿐입니다. Java 만 아는 개발자는 망치 사용법 만 알고있는 목수와 같습니다. 그러나 나는 적어도 존경받는 대학의 경우에는 그것이 사실이라고 믿는 데 어려움을 겪고 있습니다. 나는 이것이 후보자 자신의 운전 / 동기 부여 / 호기심 / 직업주의 등의 부족보다는 나쁜 후보자를보고 학교의 무능력에 대해 학교를 비난하는 것에 대한 인식 일 뿐이라고 생각한다.


2
동의했다. 방금 몇 년 전에 졸업했으며 대부분의 수업은 Java를 사용하여 교육을 받았지만 C 또는 C ++를 사용하여 수업을 수강하지 않고는 졸업하기가 어려웠으며 Haskell의 사용을 강조하는 프로그래밍 언어 과정도있었습니다. .
mipadi

제 학위에서는 먼저 Pascal을, 그 다음 Java를 OO 언어로 수행했습니다. 지난 2 년 동안, 교수의 90 %는 어떤 언어를 사용하든 신경 쓰지 않았습니다. 우리 중 일부는 c / c ++ / ruby ​​/ C # / python / even haskell을 사용했지만 대부분의 사람들은 자신이 알고있는 Java를 고수했습니다. assembly / c / c ++, 즉 3D 그래픽 (옵션) 코스와 같은 것들 중 일부는 opengl에 대해 거의 강제 c / c ++ 과정을 필요로합니다. 그리고 기본 시스템 과정은 SPARC 어셈블리를 강제로 시행했습니다 (의도적으로 작업하고 있었기 때문에). 나는 그들이 지금 1 년에 python / c ++로 이사했다고 들었습니다 ....
Aren

11

나는 이것이 많은 학교와 같은 상황이라는 사실에 정말 놀랐습니다. CS 학위를 받았을 때, 그들 사이에 오늘의 모든 인기있는 언어 (거의 40 년 전)가 포함 된 일련의 언어 코스가있었습니다 : 어셈블러 (Univac 1108 및 MIX), FORTRAN IV, SNOBOL4, COBOL, Lisp , 그리고 Algol 68. 나는 단지 하나의 언어 만 가르치는 것을 상상할 수 없습니다. 또는 어셈블러 프로그램을 작성하지 않고 컴파일러가해야 할 일을 어떻게 이해할 수 있습니까?

우리는 대부분의 데이터 및 알고리즘 코스에 Algol 및 FORTRAN을 사용했습니다. 나는 Lisp와 더 많은 시간을 보내고 싶었습니다. 대신 소개를 받았으며 이제 일부 개념을 다시 배우려고합니다. 우리는 파서를 작성하기 위해 SNOBOL4를 사용했으며 역 추적과 패턴 일치는 나중에 많은 현대 언어에 포함 된 정규식 라이브러리 작업을위한 좋은 토대를 구축했습니다.

십여 개 언어에 대한이 소개는 그 이후로 계속되고있는 저에게 관심을 불러 일으켰습니다.


8

진정한 이유를 얻으려면 해당 기관을 운영하는 사람들에게 물어봐야합니다 (그런 다음에도 말하지 않을 수도 있습니다).

몇 가지 가능한 이유 (그리고 나는 여기서 추측하는 사람을 변호하거나 비난하지 않습니다.)

Java로 작업을 수행 할 수 있습니다.

Java는 범용 언어이므로 많은 문제를 해결하는 데 사용할 수 있습니다.

많은 교사들이 Java를 이해합니다

이해하지 못하는 언어를 가르치는 것은 어렵다

자바가 인기

이것은 책, 활동적인 커뮤니티, 코드 라이브러리 등 많은 Java 자원이 있음을 의미합니다.

자바는 쉽다

Java를 수행하기 위해 많은 저수준 물건이나 이론을 이해할 필요가 없습니다. 당신은 그것을 할 수 있지만, 적어도 당신은 일을 얻을 수 있습니다.

자바는 널리 퍼져있다

더 많거나 적은 것에서 실행할 수 있습니다.

자바 프로그래머를위한 직업이 있습니다

Java를 필요로하는 많은 직업이 있습니다. 교사는 실제 세계를 위해 학생들을 준비시켜야합니다.

제한된 시간이 있습니다

많은 과정에서 여러 언어, 이론, 저수준 개념 등을 가르 칠 시간이 없습니다.

학생들이 원하는 것

많은 학생들이 이미 Java에 대해 들어 본 적이 있습니다. 그들은 친숙하기 때문에 좋아합니다.


6

그것이 업계에서 요구 한 것입니다. Java 개발자가 부족하여 학교에서 개발자를 만들기 시작했습니다. 회사는 문을 통과하자마자 작업을 시작할 수있는 개발자를 확보했습니다.

어쨌든 언어는 중요하지 않습니다. 그들은 비 GC 언어를 가르 칠 수 있으며 여전히 나쁜 프로그래머를 생산합니다. 학교에서 사용하는 언어는 구현 세부 사항입니다. 학교는 개념을 가르쳐야합니다. 그렇지 않다면 학교는 그들이 가르치는 언어가 아닌 문제입니다. 누군가가 포인터가 무엇인지 모른다고해서 그들이 효과적인 프로그래머가 될 수 없다는 것을 의미하지는 않습니다.

어쨌든 GC는 미래의 길입니다.


4
포인터가 무엇인지 알 필요가 없습니다. 그러나 개념을 비교적 빠르게 선택할 수 있어야합니다. 포인터 또는 포인터와 유사한 개념을 이해하지 못한다는 것은 컴퓨터 과학에 대한 전체적인 이해가 부족함을 나타냅니다. 모든 CS 졸업생이 멋진 저급 프로그래머가 될 필요는 없지만 적어도 4 년제 대학 학위를받을 때 무슨 일이 일어나고 있는지에 대한 개념적 이해가 필요하다고 말하고 있습니다.
Billy ONeal

1
CS는 프로그래밍에 관한 것이 아닙니다.
Javier

1
@Javier : 어떻게 CS는 하지 프로그래밍에 대해? CS의 "이론적 컴퓨터 과학"은 프로그래밍에 관한 것이 아니라 대부분 프로그래밍에 관한 것 입니다 .
Billy ONeal

1
@Billy ONeal : 위키 백과 정의는 약간 길지만 프로그래밍에 가장 근접한 부분은 "구현을위한 실용적인 기술의 연구"입니다. 즉, 그것은 구현 (프로그래밍)에 관한 것이 아니라 구현 기술 (알고리즘, 구조, 언어 등)을 연구하는 것입니다
Javier

1
@Javier : "프로그래밍 연구"와 "프로그래밍의 행동"은 같은 것이라고 생각합니다. 결국, 코드는 작성된 것보다 훨씬 자주 읽습니다. 그러나 그 점은 바로 옆에 있습니다. CS 학위를 받으면 결국 프로그래밍을해야합니다.
Billy ONeal

4

게으름과 이익 동기. Java는 대부분의 사람들에게 80 %의 노력으로 80 %의 노력을 기울입니다. 그러나 이것은 종종 무슨 일이 일어나고 있는지에 대해 깊이 이해하지 못하고 높은 수준의 도구보다 더 깊이 파고들 수없는 "원숭이를보고"부두 코더를 생성합니다.

C / C ++를 올바르게 가르치는 것은 어렵습니다. 잘 수행하더라도 포인터와 같은 저수준 개념을 완전히 이해하지 못할 수도 있습니다 (이에 대한 연구가 있습니다). 게다가, 그것은 직업 시장에서 즉시 관련이없는 것처럼 보입니다.


2
그러나 yuo가 포인터를 이해하면 참조를 훨씬 쉽게 이해할 수 있습니다.
Michael K

3

나는 대부분 동의하지만 어느 정도는 동의합니다.

CS cource를 가르치려면 데이터 구조 또는 알고리즘에 중점을 둡니다. 불필요한 것들을 대부분 없애는 것이 좋습니다. 높은 수준의 개념을 배울 때 학생들이 낮은 수준의 스터드를 다루지 않도록하고 싶습니다.

반면에 저수준의 것들도 가르쳐야합니다. 그래서 우리는 더 많은 프로그래머를 얻습니다.


나는 단일 코스에 대해 이야기하고 있지 않습니다. 단일 코스의 경우 괜찮습니다. 전체 커리큘럼에 대해서는 그렇지 않습니다.
Billy ONeal

3

언제나 그렇듯이 무엇 을 가르치고 싶고 얼마나 많은 시간을 할애 해야하는지에 대한 질문입니다 .

Java로 작업을 수행한다는 것은 길 잃은 포인터와 자유 / 멀락을 다룰 필요가 없다는 것을 의미합니다. 이는 찾기 어려운 버그가 훨씬 적다는 것을 의미합니다.

그렇다고해서 거래에 능숙해야하는 기본 장비에 대해 배우지 말아야 할 것이 아니라 업무에 적합한 도구를 선택해야 할 수도 있습니다. 고급 알고리즘은 어셈블러 코스에서 가장 좋은 주제는 아닙니다.


프로그래밍 입문 과정 또는 데이터 구조 과정의 경우 Java가 좋습니다. 그러나 4 년제 커리큘럼 전체가 아닙니다.
Billy ONeal

@곤봉. 동의했다. Java를 사용하면 걱정할 필요가없는 것을 사겠다고 언급합니다. Java가없는 다른 코스의 기본 사항을 배워야합니다.

2

컴퓨터가 실제로 작동 하는 방식에 대해 배우도록 요구하는 것이 너무 많은가 ? CS 과정 개요에는 운영 체제 및 컴퓨터 아키텍처가 포함되어 있지 않습니다. 봉투 뒷면에 컴퓨터를 디자인 할 수 있어야한다는 말은 아니지만 일반적인 개요를 통해 모든 언어를 제대로 이해할 수 있습니다. Java는 가상 머신 에서 실행됩니다 .


1
인가 가 좋은 컴퓨터 과학 프로그램을 하지 않는 운영체제 코스와 컴퓨터 조직 과정을 포함은?
mipadi

나는 확실히 희망하지 않는다!
Michael K

0

솔직히 말해서, 당신이 가르치는 유일한 언어는 자바이기 때문에 모든 학위, 특히 CS를 존중하지 않아야한다고 생각하지 않습니다.

괜찮은 comp. 과학 학생은 자신의 CS 학위가 단지 종이에 지나지 않으며 실제 지식은 개인 프로젝트와 개인 연구에서 나올 것임을 이해합니다. 좋은 학생들은 C를 알아야하고 Linux / Unix에서 작업을 수행하는 방법을 배우고 현대 언어로 손을 잡지 않는 방법을 배우고 싶다고 생각하고 싶습니다.


-1

Java 사용에 문제가 없습니다. 가장 큰 문제는 (앞서 언급했듯이) 대학이 명령 프로그래밍을 모든 문제를 해결할 수있는 최선의 유일한 방법으로 가르치는 것입니다. 이것은 진실과는 거리가 멀다. 예를 들어, 3 개의 다른 코스에 3 개의 명령형 언어 (또는 최악의 동일한 언어)를 사용하는 대신 3 개의 다른 프로그래밍 패러다임을 사용해야합니다. 예를 들어 Java (제한적), Prolog (선언적) 및 Haskell (기능적)이 있습니다.

왜 이런 일이 발생하는지에 관해서는 (1) 정치-의장이 열린 마음을 갖지 않거나 개인적인 이익 / 스폰서가 없음, (2) 게으름-교수는 한 번 학생이었고 그들이 알고 있거나 좋아하는 것을 가르치는 것입니다.


-1

그랜드 래 피즈 Mi. 그들이 초급 프로그래밍 수업을 위해 Java에서 Python으로 전환 한 후 불신의 교수는 학기 말쯤에 우리 그룹에 대해 언급했다. "많은 사람들이 실제로 프로그래밍 할 수 있습니다. 그의 놀라움은 이전의 Java 경험과 대조적이었습니다. 이것은 Java를 나쁜 언어로 만들지 않고 처음부터 집어 들기가 어렵습니다. 나는 C, C ++ 또는 메모리 할당 체계 또는 유형에 대한 친밀한 지식이 필요한 언어에 대해서도 똑같은 주장을합니다.


1
음, 파이썬은 다른 언어와 마찬가지로 유형에 대한 친숙한 지식이 필요합니다.
Billy ONeal

학생들은 컴파일로 컴파일하는 대신 문장으로 피드백을 얻을 수 있기 때문에 통역사가있는 언어를 배우기가 훨씬 쉬울 것으로 기대합니다.
kevin cline

@BillyONeal 당신은 저를 잘못 읽었습니다. 문맥은 마지막 문장의 메모리 할당이었습니다. 나는 str () 또는 dict () 또는 tuple () 또는 list () 또는 set ()의 요소의 크기 또는 #에 대해 아직 걱정하지 않았습니다 ... 나는 그것들을 '사용'합니다.
Ben DeMott

@ kevincline 감사 케빈-이것은 내가 겪고 싶었던 것이었다. downvotes에 의해 판단 내 커뮤니케이션 기술에 노력해야합니다;)
벤 DeMott

-2

컴퓨터 시스템 엔지니어링 학위를 받았으므로 어셈블리, 마이크로 프로세서, VHDL, 논리 게이트가 무엇인지, 플립 플롭을 만드는 방법, 전기 회로, 연산 증폭기, 저역 통과 필터, 진폭을 연구했습니다. 전화 키패드처럼 들리도록 로직 분석기로 엉망인 실험실에서 회로를 구축 한 변조는 몇 가지 물리 수업을 받았습니다. 리눅스 측면에서-이전에 커널을 다시 컴파일하고 작은 장치 드라이버와 숙제 파일 시스템을 작성했습니다.

그러나 나는 더 높은 수준의 것을 좋아한다는 것을 깨달았습니다. 저는 C보다 Python을 선호합니다. C #을 좋아하고 가비지 수집기를 좋아합니다. 나는 수학과 알고리즘, 데이터 구조를 좋아하지만 포인터의 특정 팬이 아닙니다. 난 그냥 원하지 않아

그래서 당신은 대학이 더 많은 C를, 더 적은 Java를 가르쳐야한다고 생각합니다. 다른 사람은 계획에서 모든 것을 가르쳐야한다고 생각합니다. Spolsky는 두 가지를 모두 취할 것입니다.

그렇습니다. 대학 학위는 한 장의 종이 일 뿐이지 만 "학교 교육에 방해가되지 않도록하십시오". Wikipedia, Stack Overflow, Coursera.org 등이 항상 있습니다. 전통적인 대학의 모습이 덜 중요해 보일 것입니다.

만약 내가 학사 학위를받을 수 있다면, 다른 학교에 갔을 것입니다. 전기 공학에 관한 것이 아니라 물리와 프랑스어의 수학, CS + 부전공을 공부했을 것입니다. 흠집 프랑스어; 스위스에서 유학을하면서 5 개의 자연어를 배웠어야했습니다. 나는 다시 돌아가서 현실 세계에서 살아 남기 위해 밀턴 프리드먼의 저서 모음으로 머리를 깎아 내기 위해 대학에서 경제학 수업을 소개해야한다고 확신하는 사람을 찾을 것입니다. 내가 읽은 경제의 주제에 관한 책). 나는 또한 Freakonomics 1 책이나 Perl language에 관한 책에 돈을 지불하지 않을 것입니다.

가늠자로, 나는 많은 일을 다르게했을 것입니다. 내가 지금 할 수 있고, 당신에게 이것을 추천하는 것은 당신 만의 모험을 선택하는 것입니다 : http://www.codinghorror.com/blog/2008/03/choosing-your-own-adventure.html

내가 지금까지 주식 시장에서 1 천억 달러를 벌었을 때 암 연구에 투자했을 것입니다. 나는 플라스틱 폐기물의 세계를 없애기 위해 과학자들을 고용했을 것입니다. Ron Paul 캠페인에 충분한 현금을 기부하여 중동 전쟁이 3 년 전에 끝났을 것입니다.

다시는 시간을 되돌릴 수 없다는 점을 인식하고 현명하게 보내십시오.


Downvoters, 자세히 설명하십시오.
Job

-2

몇 년 전 저는 영국에서 더 많은 학생들을 프로그래밍에 끌어 들이기 위해 Java 결정이 내려진 곳을 읽었습니다. 불쾌한 포인터와 메모리 관리가 없기 때문에 뇌에서 더 쉬웠을 것입니다. 이것이 바로 파이썬이 새로운 '학습 도구'로 빠르게 채택되고있는 이유라고 생각합니다. 나는 당신의 전형적인 유니 코스가 당신을 프로그래머로 만들지 않을 것이라고 생각합니다. 그것은 당신에게 일정량의 지식을 제공하고 프로그래밍을 위해 당신을 준비시키는 것입니다. 프로그래머가 스스로를 호출 할 수있는 날은 일반적으로 uni 후에 상당히 많은 시간이 걸리고 그 시간이 오면 포인터, 가비지 콜렉션 및 OOP 이외의 프로그래밍 패러다임은 문제가되지 않습니다.


-2

왜 Java가 사용됩니까?

세 가지 이유 :

  1. Java는 C 스타일 구문을 사용합니다. 많은 프로그래머가 익숙하기 때문에 학습 곡선이 줄어 듭니다.

  2. 돈은 자바를 시원하고 현대적으로 판매하는 데 소비되었습니다. 그러나 lisp에 비해 java는 석기 시대에 살고 있습니다.

  3. JVM. JVM은 마케팅 과대 광고가 아니라 합법적 인 Java에 대한 멋진 점 중 하나입니다. JVM이 프로그램을 실행하기위한 플랫폼으로 칭찬 받아야하지만, 그 자체로는 Java 언어의 존재가 가치가 없습니다. JVM에 대해 다양한 언어를 이론적으로 그리고 실제로 컴파일 할 수 있습니다.


1
환영. 스택 교환 프로그래머에게 첫 번째 게시물이 될 것 같습니다. 평판, 질문 및 답변에 대한 조언 은 FAQ 페이지 programmers.stackexchange.com/faq 를 참조하십시오 . 핵심은 답변이 도발적이 아닌 유익한 정보 여야한다는 것입니다. Java와 같은 주장이 석기 시대이고 Lisp가 현대인 경우 이유를 설명하십시오. 많은 독자들은 Lisp가 1958 년에 지정되었으며 FORTRAN보다 약간 더 젊다는 것을 알고있을 것입니다. FORTRAN 또는 Algol과 공유되는 Java에 대한 디자인이 설계를 제한하고이를 제한한다고 설명하려면 설명하십시오.
DeveloperDon

-3

귀하의 질문은 Java가 너무 멋지지만 과학 컴퓨팅에는 충분하지 않다는 논문을 쓴 다른 사람의 발견을 뒷받침합니다. 나는 그가 모든 정밀한 정밀도, NAN 등으로 Big Decimal을 사용하고 그것을 사용해야한다고 생각합니다.

자동 쓰레기 수거 세계에서만 살고 싶습니다. 더 건강하고, 깨끗하고, 깔끔하고, 미적이며, 건강 비용으로 낭비되는 돈을 방지하고, 더 바람직합니다. 원치 않는 것으로 태그를 지정할 필요가 없습니다. 단순히 그것을 역 참조하거나 null로 설정하거나 아이템이 자동으로 범위를 벗어날 때 가비지 수집 태그

자, 이제 Java에 대해서만 이야기하고 있지만 실제 쓰레기 시나리오에서도 작동하면 가장 도움이됩니다. Java는 학교에서 언어로 사용하기에 충분할 정도로 어디서나 한 번 실행됩니다. 사용하는 모든 객체에 태그를 지정하고 자체 사용을 중단하고 싶지 않은 행복한 프로그래머는 메모리 누수와 좋아하지 않는 것이 Java를 대신하는 좋은 논리입니다.

Java에는 포인터가 있습니다.이를 참조라고 부릅니다. String s1 = "Hello"; 문자열 s2 = "Hello"; 문자열 s3 = 새 문자열 ( "Hello");

s1과 s2는 동일한 String 객체를 가리킬 것입니다-s1 == s2, s1.equals (s3)이지만 s1 == s3은 s3이 새로운 참조 객체이기 때문에 false입니다-이것은 자바 참조와 I의 산술입니다 이 모든 것을 너무 죄송합니다 .C 또는 C ++에서 포인터 산술의 복잡한 것을 이해하지 못하는 사람으로 표시되고 싶지 않습니다.


2
참조는 포인터가 아닙니다. 그것들을 산술적으로 사용할 수 없으며, 그것들을 사용하여 그들이 가리키는 메모리 조각을 재 해석 할 수 없습니다. 물론 가비지 수집 세계에서 얼마나 많이 살기를 원하든 문제의 사실은 세계가 가비지 수집 세계가 아니라는 것입니다. 나는 자바가 나쁜 언어이거나 사람들이 자바를 사용해서는 안된다고 말하는 것이 아닙니다. 당신이 그것을 좋아한다면 그것을 사용하십시오. 새로운 프로그래머가 이해하는 데 필수적인 것을 숨기므로 초보자 언어로는 부적절하다고 생각합니다.
Billy ONeal
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.