زبان های برنامه نویسی

اصلاح شده

2026-04-18

زبان ماشین و انسان

انقلاب زبان‌های برنامه نویسی
  • زبان انسان (English)
  • زبان‌های برنامه نویسی سطح بالا (C, C++, R, Python)
  • زبان برنامه نویسی سطح پایین (Assembly)
  • زبان ماشین (01)

نکته. در نهایت اکثر زبان‌های برنامه نویسی منطق یکسانی دارند و یا دگیری یک زبان برنامه نویسی، یادگیری زبان برنامه نویسی دیگر را ساده تر می‌کند.

سایت تبدیل زبان برنامه نویسی R به زبان برنامه نویسی Assembly https://www.codeconvert.ai/r-to-assembly-converter

  • خروجی
    name Age
1 Mohsen  30
2  Arash  12
  • R
df = data.frame(
  "name" = c("Mohsen", "Arash"),
  "Age" = c(30, 12)
)

print(df)
  • Matlab
df = table;
df.name = {'Mohsen', 'Arash'};
df.Age = [30, 12];

disp(df)
  • Python
import pandas as pd

df = pd.DataFrame({
    "name": ["Mohsen", "Arash"],
    "Age": [30, 12]
})

print(df)
  • Sas
data df;
  input name $ age;
datalines;
Mohsen 30
Arash 12
;
run;

proc print data=df;
run;
  • Fortran
PROGRAM main
  IMPLICIT NONE
  
  INTEGER :: i
  CHARACTER(LEN=10), DIMENSION(2) :: name
  INTEGER, DIMENSION(2) :: age
  
  name(1) = "Mohsen"
  name(2) = "Arash"
  age(1) = 30
  age(2) = 12
  
  DO i = 1, 2
    WRITE(*,*) "name: ", name(i), ", age: ", age(i)
  END DO
END PROGRAM main
  • C
#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>

int main() {
    std::vector<std::string> name = {"Mohsen", "Arash"};
    std::vector<int> Age = {30, 12};

    std::unordered_map<std::string, std::vector<int>> df;
    df["name"] = name;
    df["Age"] = Age;

    for (const auto& pair : df) {
        std::cout << pair.first << ": ";
        for (const auto& value : pair.second) {
            std::cout << value << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}
  • Assembly
asm
.data
df_name_data:
    .asciz "Mohsen"
    .asciz "Arash"
df_age_data:
    .int 30
    .int 12
df_nrows = 2
df_ncols = 2

.text
.globl main
main:
    # Allocate memory for the data frame
    movl $df_nrows, %eax
    movl $df_ncols, %ebx
    imull %ebx, %eax
    shl $2, %eax # Each element is 4 bytes (int)
    pushl %eax
    call malloc
    popl %ecx
    movl %eax, %edi # edi points to the data frame

    # Copy the name data
    movl $df_name_data, %esi
    movl $0, %ecx
loop1:
    cmpl $df_nrows, %ecx
    je end1
    movl (%esi), %eax
    movl %eax, (%edi)
    addl $4, %edi # Move to the next column
    addl $4, %esi # Move to the next name
    incl %ecx
    jmp loop1
end1:

    # Copy the age data
    movl $df_age_data, %esi
    movl $0, %ecx
loop2:
    cmpl $df_nrows, %ecx
    je end2
    movl (%esi), %eax
    movl %eax, (%edi)
    addl $4, %edi # Move to the next column
    addl $4, %esi # Move to the next age
    incl %ecx
    jmp loop2
end2:

    # Print the data frame
    movl $df_nrows, %eax
    movl $df_ncols, %ebx
    imull %ebx, %eax # Total number of elements
    movl %edi, %ebx # ebx points to the start of the data frame
    movl $0, %ecx
loop3:
    cmpl %eax, %ecx
    je end3
    # Print the current element
    pushl (%ebx)
    pushl $format
    call printf
    addl $8, %esp
    addl $4, %ebx # Move to the next element
    incl %ecx
    jmp loop3
end3:

    # Free the memory
    movl %edi, %eax
    call free

    xorl %eax, %eax
    ret

.data
format:
    .asciz "%d "

مفسر و کامپایلر

پایتون، R و متلب یک زبان سطح بالا محسوب می‌شوند. به این معنی که به زبان انسان نزدیک‌تر هستند تا به زبان سخت‌افزار کامپیوتر. اما مفهوم دستورات زبان‌های سطح بالا توسط CPU قابل فهم نیست. چرا که CPU فقط دستوراتی که به زبان ماشین نوشته شده باشند را درک می‌کند. زبان ماشین از دو نشانه 0 و 1 تشکیل شده است و CPU قادر است تنها همین زبان را بفهمد و دستورات آن را اجرا کند:

00101000111010010010101000000111
11100110000011101010010101101101
...

پس برنامه‌های زبان‌های سطح بالایی مثل پایتون را چگونه باید برای CPU شرح داد؟

مترجم‌های متعددی برای ترجمه و تبدیل کدهای زبان سطح بالا به زبان سطح ماشین، وجود دارد. اما از آن‌جایی که زبان ماشین کاملا وابسته به سخت‌افزار کامپیوتر است، بنابراین ما یک زبان ماشین که بتواند با انواع سخت‌افزار هماهنگ شود را نداریم. برنامه‌های نوشته شده به زبان‌های سطح بالا را می‌توان با استفاده از یک مفسر متفاوت در ماشین (همان سخت‌افزار) جدید یا کامپایل مجدد کد برای ایجاد نسخه زبان ماشین برنامه موردنظر برای ماشین جدید بین رایانه های مختلف جابجا کرد.

این مترجمان زبان برنامه‌نویسی به دو دسته کلی تقسیم می شوند:

  1. مفسر (Interpreter)
  2. کامپایلر (Compiler)

یک مفسر کد برنامه نوشته شده توسط برنامه‌نویس را خوانده، آن را تجزیه می‌کند و دستورالعمل‌ها را تفسیر می‌نماید. با این توصیف، پایتون یک مفسر محسوب می‌شود که کدهای برنامه ما رافوراً پردازش می‌کند.

ده تای اول

سایت استک اورفلو هر ساله از برنامه نویسان جهان یک نظرسنجی جامع انجام می‌دهد. https://survey.stackoverflow.co/

در این شکل توزیع کشورهای افراد شرکت کننده را ترسیم نمودیم (بعضی افراد از اظهار کشورشان امتناع کردند که از داده‌ها حذف شده‌اند)

توزیع کشورهای توسعه دهندگان شرکت کننده در نظرسنجی جهانی

با توجه به داده‌های موجود در نظر سنجی برای دقت بیشتر و تحلیل بهتر نتایج، بخشی از شرکت کننده‌ها فیلتر شده‌اند.

شرایط توسعه دهندگانی که برای تحلیل انتخاب شده‌اند.

  • افراد بالای ۲۵ سال سن
  • افراد با بیش از ۵ سال سابقه برنامه نویسی حرفه‌ای
  • افراد شاغل (تمام یا نیمه وقت) یا خود اشتغال
  • افرادی که از انواع گزینه‌های توسعه دهنده کمتر از ۳ گزینه انتخاب نمودند.

توزیع کشورهای توسعه دهندگان فیلتر شده شرکت کننده در نظرسنجی جهانی

انواع توسعه دهندگان

انواع توسعه دهندگان

نگاه کلی

ده زبان برنامه نویسی برتر-نگاه کلی

نرم افزار

ده زبان برنامه نویسی برتر-توسعه دهندگان نرم افزار

وبسایت (بک‌اند-فرانت-اند)

ده زبان برنامه نویسی برتر-توسعه دهندگان وبسایت

بازی سازی

ده زبان برنامه نویسی برتر-توسعه دهندگان بازی

موبایل

ده زبان برنامه نویسی برتر-توسعه دهندگان موبایل

دانشمند داده و یادگیری ماشین

ده زبان برنامه نویسی برتر-توسعه دهندگان داده و یادگیری ماشین