2015-01-06 6 views
0

내가 어떻게 프로그램 및 스크립트 다른 언어 (자바, C++, 자바 스크립트/Node.js를, HTML/CSS 초보자에서) 자신을 교육, 독학을하니, 설명 전자 회로 및 주변기기 추가시작 프로그래머

연구하는 동안 여러 가지 목표를 달성하기 위해 여러 언어를 사용하고 있습니다 (예 : Javascript/Node에서 웹 서버를 작성하여 HTTP 요청 및 응답을 처리하고, 웹 페이지로 응답 함). HTML을 사용하고 CSS로 사용자 정의/양식화하고 Javascript 방식으로 포함하거나 Node 대신 PHP 또는 Python으로 작성).

나는 하나의 언어 대신 여러 언어가 사용되는 이유 (일부 고급 언어는 필요한 작업의 전부는 아니더라도 많은 부분을 수행 할 수 있음)와 HOW 정보 다른 언어들 사이에 전달됩니다. 한 프로그램에서 다른 프로그램을 호출 할 수 있습니까 (HTML 파일이 CSS 및 Javascript 파일에 "호출"할 수 있음을 알고 있으므로 해당 인스턴스를 이해할 수 있습니까?)

은 내가이 끊었하고 이유 때문에 내 경험 부족 및 기타 일반적인 언어에 대한 지식의 부족이라고 생각합니다. 특정 언어가 특정 작업 만 특정 방식으로 처리한다는 의미입니까?

나는 자바와 C++와 같은 일부 언어처럼, 예를 들어, 다른 무수한 업무를 처리하기 위해 다양한 방법으로 다양한 경우에 사용할 수있다 생각합니다. 그 중 일부는 사실이 아닌가요 (PHP & Python 등)?

나는 풍부한 지식과이 세상에서 제공하는 가장 빛나는 마음의 집단적 경험을 파고 들지만 나는 이것에 대해 새롭다는 것을 기억한다. 교실이지만 특정 언어로 프로그래밍하는 것에 관한 많은 책을 읽고 소유하고 있습니다. 나와 다른 사람들이 이해할 수있는 방식으로 대답하십시오.

는 시간 내 주셔서 감사하고 나는 응답을 기대합니다.

건배.


환상적인 답변!

저는 궁금합니다. 특정 문제에 대한 해결책을 찾으려고 할 때 프로그래머는 언제 한 언어에서 멈추고 다른 언어로 세그먼트를 계속할 것인지를 알고 있습니까?

내가 혼란스러워하는 곳입니다. 그것은 일반적으로 소프트웨어 개발자 및 그/그녀 자신의 특정 및 예술적 취향에 무언가가 행해지거나 여러 언어를 사용하지 않고서는 불가능한 일이 있는가?

스크립팅을 이해하고 프로그램이나 응용 프로그램보다는 사용하는 것이 좋으며 런타임 실행/컴파일 된 코드, 환경 및 프레임 워크와 가상 컴퓨터를 알고 있지만 명확하게 정의 된 둘레 또는 기능의 한계를 설명하지는 않습니다/특정 언어에 대한 능력. 파이썬에서 C++ 함수를 호출하는 이유는 무엇입니까? 파이썬이 처음부터 필요한 것을 성취하지 못했고 더 적절한 언어를 선택하면 솔루션에 또 다른 수준의 복잡성을 추가해야 할 필요성이 완화 될 수 있었습니까? 나는 그것을 과소 평가할 지 모르지만 이것을 배우면 나를 안내하고 프로그래머로서 더 나은 해결책을 제시 할 수있게 도와 줄 것입니다.

+1

은 궁극적으로 데이터 작업 지침이 있습니다. 언어 A가 Foo라는 데이터 구조를 가지고 있고 언어 B가 Foo가 ASCII의 8 바이트임을 알고 있으면 언어 B의 데이터 구조로 번역하고이를 자체적으로 조작 할 수 있습니다. 임의의 데이터 조각에 대해서도 마찬가지입니다. 매핑을 알아야합니다. 나는 특히 같은 데이터에서 C와 C#을 함께 사용하려고 생각하고있다. 콘서트에서 일하는 웹 언어는 다른 주석 작성자를위한 토론입니다. – AndyG

+1

모든 것을하는 한 언어에 관해서는 대답은 실용적인만큼 역사적입니다. HTML이 처음이었습니다. Google은 텍스트 파일 (HTML)을 데이터 (웹 페이지)를 표시하는 구성 가능한 방법으로 해석하는 소프트웨어 (브라우저)를 가르칩니다. 그런 다음 자바 스크립트 (와우, 이제는 그 텍스트 파일을 변경할 수 있습니다!) 그런 다음 CSS (이제는 기능과 요소의 모양을 분리하고 로직을 사용하여 디스플레이를 혼합하는 대신 페이지 전체에 걸쳐 균일 성을 적용 할 수 있습니다). 서로 건설 된 것들. 확실히 일부 프레임 워크는 올인원 패키지 – AndyG

+1

이지만 웹은 역사적인 짐승입니다. 서로 이야기하는 프로그램에 대한 질문에 대답하기 위해, 그들은 할 수 있습니다! 가장 간단한 방법은 신호로 생각할 수 있습니다. 대부분의 OS에는 프로세스를 종료 할 수있는 종류의 제어판이 있습니다. 이 한 프로그램이 다른 프로그램과 이야기하지 않습니까? 그들은 신호를 사용하며, 이것은 매우 간단합니다. 소켓은 파이프, 세마포어 및 때로는 공유 메모리를 통해 수행 할 수있는 또 다른 방법입니다 (XML은 매우 간단합니다! 하나는 쓰고 다른 하나는 읽습니다) – AndyG

답변

1

기본적으로 서로 다른 기술 (브라우저, 운영 체제 등)과 프로그래밍 언어는 시간이 지남에 따라 발전하여 실제로 많은 다른 언어가 사용되었습니다. 여러 가지 실제 언어가있는 것과 같은 이유로. 프론트 엔드 프로그래밍을 위해 자바 스크립트 대신 파이썬을 지원하는 웹 브라우저를 디자인 할 수는 있지만, 스크립트가 페이지에 액세스하기 위해 사용하는 API (DOM HTML 모델)를 디자인하는 일은 모든 주요 웹 브라우저에서 지원해야하며, 표준화되어 있으며 웹 개발자는이를 사용해야 할 것입니다.

대부분의 경우 한 언어로 작성된 프로그램이 다른 언어로 작성된 프로그램을 호출 할 수 있습니다. 컨텍스트에 따라 두 부분을 연결하는 인터페이스가 필요합니다. 예 :

  • C와 C++ 모두 컴파일 된 언어입니다. 즉, 프로세서에서 실행될 기계 코드로 변환됩니다. 하나의 기능 코드가 저장된 기계 코드의 위치가 함께 저장됩니다. 운영 체제의 링커는 두 모듈 (.c 파일)을 연결하여 하나의 모듈에서 수행 된 함수 호출이 올바른 시스템 코드의 다른 결과에서 정의 된 함수에 대해로드되도록합니다. C++ 프로그램이 C 프로그램을 호출하기 위해서는 하나의 문제 (다른 많은 문제)는 함수의 이름이 다르게 지정된다는 것입니다 (이름 맹 글링). 실제로 C 프로그램의 함수는 이것을 올바르게 설정하기 위해 C++ 소스 코드에서 extern "C"으로 선언해야합니다.

  • JavaScript, CSS 및 HTML은 브라우저에서 해석되고 실행되며 (JavaScript의 경우) 반드시 기계어로 번역 될 필요는 없습니다. (JavaScript 엔진은 Just-In-Time 컴파일을 사용할 수 있습니다.) 따라서 브라우저는 CSS 코드에 액세스 할 수있는 JavaScript 코드를 제공합니다. .style.color = ....

  • Perl, PHP, Python 등의 스크립트 언어가 서로를 호출하는 데 필요한 중간 단계 ("글루 코드")를 처리하는 여러 라이브러리가 있습니다. 예를 들어 PHP 코드가 파이썬 프로그램을 실행하기 위해 파이썬 인터프리터를 호출하거나 운영 체제의 메커니즘 등을 통해 실행중인 파이썬 프로그램에 데이터를 전달할 수있는 많은 가능성이 있습니다.

  • SWIG와 같은 래퍼는 C/스크립팅 언어에서 호출 할 C++ 코드 Python이 내부적으로 호출 할 코드에 필요한 심볼 (함수)을 추가합니다. C++ 프로그램은 Python 인터프리터에 의해로드 된 파이썬 확장자로 컴파일되며 컴파일 된 프로그램 자체는 운영 체제의 링커가 사용됩니다. 파이썬 인터프리터는 파이썬 코드를 해석하여 주어진 파이썬 함수를 호출하면 확장 기능의 래퍼 함수 머신 코드가 실행된다.

프로그래밍 언어를 범주로 분류하는 데는 여러 가지 방법이 있습니다. 높은 수준의 낮은 수준 (기계 코드)에서 예를 들어 (더 추상화, 기계 코드로 변환이 자동으로 처리) :

  • 어셈블리 시스템 레벨의 프로그래밍
  • 컴파일 된 언어 (기계 코드 명령어를 표현하는). (Java, C#, ...)
  • 스크립팅 언어 (Python, Perl, PHP, ...) 효율성, 그러나 더 유연합니다.
  • 높은 도메인 speficic 수준의 언어 (MATLAB, 애플 스크립트)
  • 쉘 스크립트 (bash는, SH)
1

프로그램은 모든 문제에 대한 해결책을 만드는 방법에 대한 것입니다. 사람들은 다르게 생각합니다. 사람들은 다른 관점에서 세상을 본다. 사람들은 솔루션을 조정하고 도구로 노는 것을 좋아합니다.언어는 사람들이 다른 문제를 해결하기 위해 그리고 경우에 따라 단지 놀이를 위해서 만들어집니다. 내 대답은 '왜 단 하나의 언어가 될까요?'라는 라인을 따라 더 많이 나온다.