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

- زبان انسان (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 شرح داد؟
مترجمهای متعددی برای ترجمه و تبدیل کدهای زبان سطح بالا به زبان سطح ماشین، وجود دارد. اما از آنجایی که زبان ماشین کاملا وابسته به سختافزار کامپیوتر است، بنابراین ما یک زبان ماشین که بتواند با انواع سختافزار هماهنگ شود را نداریم. برنامههای نوشته شده به زبانهای سطح بالا را میتوان با استفاده از یک مفسر متفاوت در ماشین (همان سختافزار) جدید یا کامپایل مجدد کد برای ایجاد نسخه زبان ماشین برنامه موردنظر برای ماشین جدید بین رایانه های مختلف جابجا کرد.
این مترجمان زبان برنامهنویسی به دو دسته کلی تقسیم می شوند:
- مفسر (Interpreter)
- کامپایلر (Compiler)
یک مفسر کد برنامه نوشته شده توسط برنامهنویس را خوانده، آن را تجزیه میکند و دستورالعملها را تفسیر مینماید. با این توصیف، پایتون یک مفسر محسوب میشود که کدهای برنامه ما رافوراً پردازش میکند.
ده تای اول
سایت استک اورفلو هر ساله از برنامه نویسان جهان یک نظرسنجی جامع انجام میدهد. https://survey.stackoverflow.co/
در این شکل توزیع کشورهای افراد شرکت کننده را ترسیم نمودیم (بعضی افراد از اظهار کشورشان امتناع کردند که از دادهها حذف شدهاند)

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

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

نگاه کلی

نرم افزار

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

بازی سازی

موبایل

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