백엔드 개발 PHP 튜토리얼 프로그래밍 언어에 관한 무작위 대화

프로그래밍 언어에 관한 무작위 대화

Jul 25, 2016 am 08:43 AM




앞에 적음: 우리는 기존 언어의 프로그래밍 패러다임이 절차적, 객체지향적, 기능적, 논리적이라는 것을 알고 있습니다. 소프트웨어 산업화가 대중화되고 소프트웨어가 복잡해짐에 따라 프로그래밍 언어의 개발 역사도 초기 절차적(명령형) 언어 c에서 java객체- 언어로 표현되는 지향적인 프로그래밍 언어. 논리 프로그래밍 언어 ​​(프롤로그로 대표되는 )와 함수형 언어 ​​(lisp 시리즈)도 학술이나 인공지능 분야에서 주로 사용된다. 최근에는 멀티코어의 등장으로 클라우드 컴퓨팅 시대가 도래했습니다. 함수형 프로그래밍 언어는 점차적으로 가장 고전적인 언어로 대표되는 scheme, common-lisp, ml, clojure, go.와 최신 jdk8 Functional, closure, Lambda와 같은 구문도 점차 추가되었으며, scala의 저자는 코더가 코딩에 함수형 언어 사고를 사용하는 것을 점점 더 옹호하고 있습니다. . 프로그래밍 언어의 발전도 시대의 변화에 ​​맞춰 끊임없이 변화하고 있음을 알 수 있다. 개발 과정을 보면 소프트웨어의 복잡성이라는 기본적 요구를 해결하는 중심으로 기술 개발이 진행되고 있음을 알 수 있습니다.

1. 프로그래밍 언어 개요 ​​
프로그래밍 언어는 컴퓨터를 상징하는 언어이자 인간과 컴퓨터 사이의 의사소통을 위한 언어이다. 새로운 프로그래밍 언어를 배울 때, 언어의 어떤 특성을 관찰해야 합니까? "SICP"라는 책의 저자는 세 가지 요점을 나열했습니다.

* 원시 요소. (기본 요소)
* 조합 수단. (조합 수단)
* 추상화 수단.
위의 세 가지 기능은 기본적으로 모든 프로그래밍 언어의 기능을 포괄하며, 언어 설계자가 처음부터 고려해야 할 사항이기도 합니다. 이 세 가지 사항에 대한 나의 이해: 기본 요소는 어휘 부분인 언어의 기본 기호(기본 데이터 유형, 키워드 등)를 나타냅니다. 조합의 수단은 기본 요소를 사용하여 조합하는 과정을 통해 대규모 프로그램을 구성하는 수단입니다. 추상화 수단은 추상화를 의미합니다. 추상화는 소프트웨어의 복잡성을 해결하고 소프트웨어의 가독성, 확장성, 재사용성 등을 향상시키는 중요한 수단입니다. 다음은 결합요소와 추상화 방식의 관점에서 언어의 특성을 비교한다.

2. 조합의 의미 어셈블리어 : 가장 간단한 어휘적, 문법적 형태로 저수준어라고 불린다. 언어. 어셈블러는 리터럴 번역 과정을 통해 어셈블리 코드를 네이티브 코드(CPU 명령어 세트)로 변환합니다. 제공되는 기본 요소에는 숫자, 문자, -, , *, /, 케이스, if, break, go, 명령어 및 기타 기본 요소가 컴퓨터 실행 시퀀스 기호로 결합됩니다.
C 언어는 프로그래머가 CPU, 레지스터, 메모리를 직접 다루는 작업에서 벗어나 배열, 구조 및 기타 데이터 구조와 같은 더 많은 조합 방법을 제공하는 어셈블리 언어보다 더 발전했습니다.
Java 언어는 객체 지향 언어를 표방하므로 C 언어보다 한 단계 더 나아가 강력한 유형 시스템을 사용하여 속성과 메서드를 결합합니다.
go 언어는 ML 언어와 매우 유사하며 "인터페이스", "고차 함수", "클로저", "duck 유형", "여러 값 반환"이 있으며 조합을 위한 고루틴 등을 제공합니다.

프롤로그 언어는 완전히 패턴 매칭을 위한 논리적 언어입니다. 그의 사고는 수학의 기초가 "1 1 = 2"인 것처럼 세상의 모든 정리는 가장 간단한 정리에서 파생되며, 그래야만 "우주 중력", "상대성이론"의 법칙이 성립할 수 있다는 것입니다. 그리고 다른 법칙이 도출됩니다.
Lisp 방언은 s-표현식(유명한 S-표현식)을 사용하여 데이터와 함수를 결합합니다. Lisp에서는 데이터와 함수 사이에 구분이 없습니다. 모든 것이 데이터입니다.
여담: Lisp 방언은 튜링 기계의 개념과 일치하며 코딩할 때 컴퓨터 아키텍처를 전혀 느낄 수 없습니다. 다른 언어는 von Loyman의 계산 및 저장 아이디어인 "스택" 구조나 "레지스터" 구조를 기반으로 더욱 설계되었습니다.

3. 추상화는
C 언어부터 함수를 단위로 사용하여 프로그램의 추상화를 제공합니다. 이는 프로그램의 재사용성과 모듈성을 크게 향상시킵니다. 팀워크 코딩도 가능하게 만드세요.

객체 지향 프로그래밍: 기본적으로 컴퓨터의 세부 사항을 숨기는 개발자는 객체를 통해 특정 비즈니스를 추상화합니다. 하지만 엄밀히 말하면 자바도 명령형 언어의 범주에 속해 값으로 호출됩니다. 이에 비해 Python과 Ruby는 객체 지향적이며 함수형 프로그래밍 패러다임을 결합하고 자연어에 더 가깝습니다.

lisp로 대표되는 함수형 언어: 함수는 기본이자 유일한 추상화입니다. common-lisp도 매크로를 기반으로 한 일련의 객체 지향 프로그래밍 방법을 개발합니다. 나는 함수형 프로그래밍 개념을 선호합니다: 함수의 부작용 없음(특히 왜곡된 Haskell의 경우 스레드 안전성을 고려할 필요가 없음), 고차 함수, 클로저, 람다 등.

4. 유형 시스템
사람들은 종종 다음과 같이 말합니다. JavaScript는 약한 유형의 언어이고 Java 언어는 강력한 유형의 언어입니다. 타입 시스템 관점에서 프로그래밍 언어를 차별화하는 것도 흥미롭다. 일반적으로 약한 유형의 언어는 자연어에 더 가깝고 문법도 더 자유롭고 생생합니다. 요즘 언어의 추세도 약어형 방향으로 흘러가고 있습니다.

컴퓨터는 고도로 구조화되어 있으며 스택의 바이너리 비트 오류로 인해 오버플로, 버스 및 기타 오류가 발생합니다. 따라서 언어 수준의 자유는 컴파일러나 해석기의 이점을 얻습니다. 예를 들어 Java 및 C와 같은 언어에는 강력한 타이핑 드라이브 코더의 이점이 있어 문법 및 의미 오류가 거의 없는 코드를 작성할 수 있다는 점도 편리합니다. 대규모 기술 팀을 위한 협력.

약한 유형의 언어를 사용하면 자유를 얻을 수 있고(유형 정보가 필요하지 않음) 프로그래머가 더 적은 키보드 키를 입력할 수 있습니다. 자유에는 대가가 따릅니다. 유형 추론(유형 추론)은 컴파일러나 해석기에 내장되어 있습니다. (유형 추론은 명시적인 변수 유형, 연산자, 반환 값 및 컨텍스트의 기타 정보를 기반으로 정규화 방법을 사용합니다. 스택을 사용하고 점진적인 교체 과정을 통해 유형을 추론합니다.) 약한 유형은 쉽게 컴파일할 수 있지만(또는 컴파일할 필요 없이 해석하고 실행하는 경우) 유형 확인 프로세스도 있지만 이 프로세스가 지연됩니다. 런타임까지. 따라서 약한 유형의 언어는 그다지 구조화되지 않아 코딩 시 올바른 유형을 보장하기 어렵고 IDE 지원도 어렵습니다. 그러나 일부 분석기는 구문 및 의미 오류를 지속적으로 감지할 수 있으며 이는 강력한 형식의 언어의 IDE 효과를 얻는 것과 동일합니다. 최근에는 언어의 방향이 점차 컴퓨터 아키텍처에서 벗어나 자연어의 방향으로 진화하고 있습니다. 프로그래머는 예술가처럼 코드를 자유롭게 그릴 수 있습니다.

5. 컴파일/해석
Java 언어는 해석됩니까, 컴파일됩니까? Java 소스 코드 -> 클래스 바이트 코드의 절차적 javac 컴파일러 프로세스에서 말하기는 어렵습니다. 그러나 JVM에서 바이트 코드를 실행하는 과정은 해석되거나 컴파일될 수 있습니다. 해석된 유형과 컴파일된 유형은 모두 어휘 분석 -> 구문 분석 -> 컴파일러 백엔드 -> 컴파일 원칙의 프로세스를 따릅니다. 하지만 그들만의 장점도 있습니다:

인터프리터: 코드를 빠르게 로드합니다. 인터프리터는 런타임 컨텍스트와 같은 정보를 유지해야 합니다. 따라서 필요한 코드가 로드되고 조각이 해석되어 실행됩니다. 그러나 동일한 코드에 대해 컴파일 과정을 거치는 것이 중복되어 시간낭비가 발생하게 됩니다.

컴파일러: 빠른 실행. 더욱이 컴파일러 백엔드는 중간 코드를 최적화하기가 더 쉽습니다. 최적화 프로세스는 구조화된 프로세스이기 때문입니다. 전체 중간 코드를 순회하고 코드 전체를 최적화하며 운영 효율성을 향상시키는 것이 필요한 경우가 많습니다.

런타임: 일반적으로 해석된 언어는 실행 프로세스 중에 변수의 검색, 바인딩, 범위 등을 제공하기 위해 런타임 컨텍스트 정보를 메모리에 유지해야 합니다. 컴파일된 언어는 레지스터 스택 모델을 기반으로 코드를 실행합니다. 기본적으로 스택 구조에서 데이터 바인딩이 완료되어 실행 속도가 약간 빨라집니다.

Hotspot-jvm은 해석과 컴파일의 각각의 장점을 결합합니다. 먼저 실행 프로세스를 설명합니다. 메소드가 자주 실행되어 핫스팟에 도달하면 jvm은 컴파일 프로세스를 시작하고 하위 코드를 네이티브 코드로 컴파일합니다. 그런 다음 캐시하고 다음 호출에서 직접 실행합니다. hotspot-jvm은 레지스터 명령을 희생하면서 크로스 플랫폼 고려 사항을 기반으로 하는 스택 명령을 기반으로 바이트코드를 실행합니다(안드로이드 운영 체제 기반의 dalvik 가상 머신은 레지스터 명령을 기반으로 함). 따라서 언어 디자인은 종종 절충 과정입니다. 더 많은 "자유"를 얻을수록 "희생"도 커집니다.

6. 요약: 원래 라이프니츠의 질문을 해결하기 위해 Turing이 발명했습니다. 모든 컴퓨팅 작업을 해결하는 보편적인 모델이 있습니까? 폰 레이먼(Von Leyman)이 인간 뇌 뉴런의 사고 과정을 시뮬레이션하고 기억과 산술 장치를 기반으로 한 최초의 컴퓨터인 ENIAC을 생산하기 전까지는 무어의 법칙이 붕괴된 후에도 컴퓨터 하드웨어 기술은 크게 변하지 않았습니다. 여러 수준의 캐시, 멀티 코어 및 멀티 CPU 기술을 사용하여 점점 더 큰 규모의 컴퓨팅 작업을 지원합니다. 이 과정에서 사람들이 논리학, 기호학, 알고리즘을 계속 공부하면서 컴퓨터와 상호작용하는 데 사용되는 언어는 점점 더 추상화되고 풍부해지고 있습니다. 우리는 이 이미지 기호를 사용하여 시간과 공간을 추상화하고, 이 이미지 기호를 사용하여 소프트웨어의 복잡성을 해결하며, 이 이미지 기호를 사용하여 우리의 생각을 컴퓨터에 전달합니다.



첨부파일 및 텍스트 업로드 제한으로 인해 일부 사진과 텍스트가 표시되지 않을 수 있습니다. 자세한 내용은 http://mp.weixin.qq.com/s?__biz=MzI5ODI3NzY2MA==&mid=100000725&idx를 참조하세요. =2&sn=fde9b2af17a00679c89f3f6fc8be64c8#rd
모든 분들과의 소통을 환영합니다.
아래 QR코드를 스캔하시면 더 많은 아름다운 기사를 만나보실 수 있습니다! (예상치 못한 놀라움을 보려면 QR 코드를 스캔하세요!!)


프로그래밍 언어에 관한 무작위 대화 WeChat 구독 계정(uniguytech100)과 서비스 계정(uniguytech)을 팔로우하여 더 많은 멋진 기사를 받아보세요! [모두 기술 네트워크 토론 QQ 그룹], 그룹 번호: 256175955에 참여하실 수도 있습니다. 개인 소개를 적어주세요! 그것에 대해 함께 이야기합시다!



본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP의 다른 오류 유형을 설명하십시오 (통지, 경고, 치명적인 오류, 구문 분석 오류). PHP의 다른 오류 유형을 설명하십시오 (통지, 경고, 치명적인 오류, 구문 분석 오류). Apr 08, 2025 am 12:03 AM

PHP에는 4 가지 주요 오류 유형이 있습니다. 1. NOTICE : 가장 작은 것은 정의되지 않은 변수에 액세스하는 것과 같이 프로그램을 방해하지 않습니다. 2. 경고 : 심각한 통지는 파일을 포함하지 않는 것과 같은 프로그램을 종료하지 않습니다. 3. FatalError : 가장 심각한 것은 기능을 부르는 것과 같은 프로그램을 종료합니다. 4. parseerror : 구문 오류는 엔드 태그를 추가하는 것을 잊어 버리는 것과 같이 프로그램이 실행되는 것을 방지합니다.

PHP 및 Python : 두 가지 인기있는 프로그래밍 언어를 비교합니다 PHP 및 Python : 두 가지 인기있는 프로그래밍 언어를 비교합니다 Apr 14, 2025 am 12:13 AM

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP에서 보안 비밀번호 해싱을 설명하십시오 (예 : Password_hash, Password_Verify). 왜 MD5 또는 SHA1을 사용하지 않습니까? PHP에서 보안 비밀번호 해싱을 설명하십시오 (예 : Password_hash, Password_Verify). 왜 MD5 또는 SHA1을 사용하지 않습니까? Apr 17, 2025 am 12:06 AM

PHP에서 Password_hash 및 Password_Verify 기능을 사용하여 보안 비밀번호 해싱을 구현해야하며 MD5 또는 SHA1을 사용해서는 안됩니다. 1) Password_hash는 보안을 향상시키기 위해 소금 값이 포함 된 해시를 생성합니다. 2) Password_verify 암호를 확인하고 해시 값을 비교하여 보안을 보장합니다. 3) MD5 및 SHA1은 취약하고 소금 값이 부족하며 현대 암호 보안에는 적합하지 않습니다.

PHP 실행 : 실제 예제 및 응용 프로그램 PHP 실행 : 실제 예제 및 응용 프로그램 Apr 14, 2025 am 12:19 AM

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

HTTP 요청 방법 (Get, Post, Put, Delete 등)이란 무엇이며 언제 각각을 사용해야합니까? HTTP 요청 방법 (Get, Post, Put, Delete 등)이란 무엇이며 언제 각각을 사용해야합니까? Apr 09, 2025 am 12:09 AM

HTTP 요청 방법에는 각각 리소스를 확보, 제출, 업데이트 및 삭제하는 데 사용되는 Get, Post, Put and Delete가 포함됩니다. 1. GET 방법은 리소스를 얻는 데 사용되며 읽기 작업에 적합합니다. 2. 게시물은 데이터를 제출하는 데 사용되며 종종 새로운 리소스를 만드는 데 사용됩니다. 3. PUT 방법은 리소스를 업데이트하는 데 사용되며 완전한 업데이트에 적합합니다. 4. 삭제 방법은 자원을 삭제하는 데 사용되며 삭제 작업에 적합합니다.

PHP : 웹 개발의 핵심 언어 PHP : 웹 개발의 핵심 언어 Apr 13, 2025 am 12:08 AM

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 ​​있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

self ::, parent ::, 그리고 static :: php oop의 차이점을 설명하십시오. self ::, parent ::, 그리고 static :: php oop의 차이점을 설명하십시오. Apr 09, 2025 am 12:04 AM

phpoop에서 self ::는 현재 클래스를 말하며, Parent ::는 부모 클래스를 말하며, static ::는 늦은 static 바인딩에 사용됩니다. 1. self :: 정적 방법과 일정한 호출에 사용되지만 늦은 정적 바인딩을 지원하지는 않습니다. 2.parent :: 하위 클래스가 상위 클래스 방법을 호출하는 데 사용되며 개인 방법에 액세스 할 수 없습니다. 3. Static ::는 상속 및 다형성에 적합한 후기 정적 결합을 지원하지만 코드의 가독성에 영향을 줄 수 있습니다.

PHP는 파일 업로드를 어떻게 단단히 처리합니까? PHP는 파일 업로드를 어떻게 단단히 처리합니까? Apr 10, 2025 am 09:37 AM

PHP는 $ \ _ 파일 변수를 통해 파일 업로드를 처리합니다. 보안을 보장하는 방법에는 다음이 포함됩니다. 1. 오류 확인 확인, 2. 파일 유형 및 크기 확인, 3 파일 덮어 쓰기 방지, 4. 파일을 영구 저장소 위치로 이동하십시오.

See all articles