STUDY

프로그래밍 언어 별 특성 차이점

uragiljay 2023. 2. 23. 20:42
반응형

개발자 4~5개월차로 접어 들면서 고인물 개발자들의 대화를 지켜보면 수 많은 언어들과 전문용어, 업계용어들을 주고받으며 대화하고 있는 걸 보게되고 난 그럴때마다 높은 벽을 느끼곤 한다. 

 

그래서 찾아 본 프로그래밍 언어들의 특성과 장단점을 전문적이지 않고 아주 얕게 적어 본다.

언어 점유율


각 언어의 특징 및 장단점과 

변수x에 5를 담고 이것이 10보다 큰지 작은지 if조건에 맞게 출력하는 코드를 각 언어로 구현하여 차이를 비교 함

 

 

C언어

  • low_level - 2진수로 이루어진 machine language 와 가까운 수준에 있는 언어
  • 포인터 - 메모리 주소를 가리키는 변수로 메모리를 직접 조작 할 수 있다. (처음 공부했을 때 이해하기 싫었던 개념)
  • 장점: 높은 성능, 하드웨어와 가까운 접근 가능, 다양한 운영체제에서 지원, 포인터와 메모리 관리에 대한 이해 필요
  • 단점: 코드가 복잡하고 길어질 가능성이 높음, 동적 메모리 할당과 해제에 대한 문제 발생 가능성 존재

포인터의 이해를 돕는 킹받는 그림

#include <stdio.h>

int main() {
    int x = 5;
    if (x < 10) {
        printf("x is less than 10\n");
    } else {
        printf("x is greater than or equal to 10\n");
    }
    return 0;
}

C++

  • C++는 객체지향 프로그래밍 언어로, 클래스와 객체 개념이 들어있다. 
  • 다중 상속, 다형성, 추상 클래스 등의 개념도 사용된다.
  • 장점: C 언어의 장점 유지하면서 객체지향 프로그래밍 지원
  • 단점: 복잡한 구조와 문법, 언어의 다양한 기능 이해가 필요, 자료형 처리가 복잡
#include <iostream>
using namespace std;

int main() {
    int x = 5;
    if (x < 10) {
        cout << "x is less than 10" << endl;
    } else {
        cout << "x is greater than or equal to 10" << endl;
    }
    return 0;
}

C#

  • C#은 Microsoft에서 개발한 객체지향 프로그래밍 언어로, Java와 비슷한 녀석
  • 장점: 객체지향 프로그래밍언어 상속, 캡슐화, 다형성 등 개념을 지원하여 코드의 재사용성과 유지보수성이 좋다
  • 단점: 윈도우 의존적. Microsoft에서 개발한 언어로 제한된 환경에서 실행가능
using System;

class Program {
    static void Main(string[] args) {
        int x = 5;
        if (x < 10) {
            Console.WriteLine("x is less than 10");
        } else {
            Console.WriteLine("x is greater than or equal to 10");
        }
    }
}

Javacript

  • JavaScript는 클라이언트 측 웹 프로그래밍 언어로, HTML과 함께 사용
  • 함수형 프로그래밍과 객체지향 프로그래밍 모두 가능
  • 동적 타입, 클로저, 콜백 함수, 프로토타입 등의 개념이 있다.
  • 장점: 브라우저와 같은 클라이언트 측에서 실행 가능, 비동기 처리에 강함, 가볍고 쉬운 문법, 다양한 라이브러리와 프레임워크 지원
  • 단점: 브라우저 호환성 문제, 전역 변수 등의 문제로 인한 오류 가능성 존재, 코드 길이가 길어질 가능성 존재
let x = 5;
if (x < 10) {
    console.log("x is less than 10");
} else {
    console.log("x is greater than or equal to 10");
}

Java

  • Java는 객체지향 프로그래밍 언어로, C++의 영향을 받았다고 한다. 
  • 장점: 객체지향 프로그래밍 지원, 다양한 라이브러리 지원, 개발 생산성 높음
  • 단점: 상대적으로 느린 속도, 자료형 처리가 복잡, 상대적으로 높은 메모리 소비
public class Main {
    public static void main(String[] args) {
        int x = 5;
        if (x < 10) {
            System.out.println("x is less than 10");
        } else {
            System.out.println("x is greater than or equal to 10");
        }
    }
}

Python

  • Python은 인터프리터 언어로, 컴파일러 없이 바로 실행 가능.
  • 코드의 가독성이 높아서 학습하기 쉽고, 라이브러리가 많다. 
  • 장점: 쉬운 문법, 빠른 개발 속도, 다양한 라이브러리(괄호 짝 맞추기 안해도 되서 좋음)
  • 단점: 속도가 느릴 수 있음, 동적 타이핑으로 인한 오류 가능성 존재
x = 5
if x < 10:
    print("x is less than 10")
else:
    print("x is greater than or equal to 10")

Kotlin

  • Kotlin은 JetBrains에서 개발한 JVM 기반의 객체지향 프로그래밍 언어입니다.
  • Java와 100% 호환성을 갖고 상호 운용성이 가능 Java보다 간결하고 안전한 코드 작성이 가가능
  • 안드로이드 앱 개발에 적합한  언어로 평가 
  • 장점: 불필요한 코드를 줄이고 간결한 코드 사용으로 자바보다 코드의 가독성이 좋고 길이가 짧아 이해하기 쉽다.
  • 단점: 초기 진입장벽이 높은 편으로 새로운 개념이나 패러다임에 적응이 필요하며 상대적으로 Java보다 느린 컴파일
fun main() {
    val x = 5
    if (x < 10) {
        println("x is less than 10")
    } else {
        println("x is greater than or equal to 10")
    }
}

Go lang

  • 구글에서 개발한 언어로 간단하고 빠른 언어로 알려져있다.
  • Go는 C++에 비해 문법이 간결하면서도 C와 같은 Low-level 언어의 효율성과 함께 garbage collector 기능을 갖추어  메모리 관리를 쉽게 하며 높은 성능 보여줌.
  • 장점: 빠른 실행 속도, 간결한 문법, 병행성 처리가 쉽다.  크로스 플랫폼 지원으로 이식성이 뛰어나다.
  • 단점: 함수형 프로그래밍과 객체지향 기능이 부족한 편, 라이브러리가 상대적으로 적음
package main

import "fmt"

func main() {
    x := 5
    if x < 10 {
        fmt.Println("x is less than 10")
    } else {
        fmt.Println("x is greater than or equal to 10")
    }
}

Ruby

  • Ruby는 C++, Java와 같은 객체지향 언어지만 Python언어처럼 문법이 간결하고 직관적임
  • Ruby는 동적 언어이며, 실행 시간(runtime)에 코드를 생성하고 실행할 수 있는 메타프로그래밍 기능을 제공한다.
  • 또한 Ruby는 Rails 프레임워크를 비롯한 다양한 프레임워크와 라이브러리로 빠른 웹 개발을 위한 풍부한 도구를 제공
  • 장점: 간결하고 귀여운 문법, 유지보수성이 좋고 확장성이 좋음
  • 단점: 라이브러리 부족, 멀티스레딩 처리가 어려움
x = 5
if x < 10
  puts "x is less than 10"
else
  puts "x is greater than or equal to 10"
end

 


 

하나라도 잘하자...

 

다양한 언어로 테스트 가능한 사이트 

 

Online editor and compiler

Paiza.IO is online editor and compiler. Java, Ruby, Python, PHP, Perl, Swift, JavaScript... You can use for learning programming, scraping web sites, or writing batch

paiza.io

 

반응형