Здравейте!
Искам да уча език за програмиране и се чудя кой от двата в заглавието да избера. Можете ли да ми кажете какви се предимствата и недостатъците на тези два езика и кой е по-подходящ да се учи като първи.
Благодаря предварително!
асемблер или c++
- aster0uidd
- Потребител
- Posts: 22
- Joined: 25 Jul 2015, 10:47
- Skype: kaloqn.stankov1
- Favorite version: CS: 1.6
- H4CK3R
- Потребител
- Posts: 30
- Joined: 28 May 2015, 17:12
- Favorite version: CS: 1.6
- Location: София
Re: асемблер или c++
Примерен код от асемблер ↓
Примерен код от С++ ↓
Ти си реши. За мен е по-добре C++!
Edit:
Със С++ можеш да разработваш и приложения за десктоп и телефони, докато асемблер не може това!
Code: Select all
;-----------------------------------------------------------
101 ; zstr_count:
102 ; Броя на zero-terminated ASCII символни низове за определяне на техния размер
103 ; in: eax = начален адрес на zero terminated string
104 ; out: ecx = брой = дължина на символния низ
105
106 zstr_count: ; Начало
107 00000030 B9FFFFFFFF mov ecx, -1 ; Инициализиране на брояча, предекремент
108 ; за да компенсира инкремента
109 .loop:
110 00000035 41 inc ecx ; Добавяне на 1 към брояча
111 00000036 803C0800 cmp byte [eax + ecx], 0 ; Сравняване на стойността на символните низове
112 ; [начален адрес в паметта Плюс
113 ; отместването на цикъла], от нула
114 0000003A 75F9 jne .loop ; Ако стойността на паметта не е нулаI,
115 ; тогава прескача до етикет '.loop',
116 ; в противен слушай продължава към следващия ред
117 .done:
118 ; Не извършваме последно увеличаване на стойността (инкрементация),
119 ; въпреки че броят е с основа 1,
120 ; не сме включили нулевия terminator в
121 ; дължината на символния низ
122 0000003C C3 ret ; Връщане в извикващата програма
Code: Select all
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!" << endl;
return 0;
}
Edit:
Със С++ можеш да разработваш и приложения за десктоп и телефони, докато асемблер не може това!
- Mr Invisible
- Потребител
- Posts: 5
- Joined: 09 Jun 2015, 15:01
- Skype: echo123
- CS Nick: Invisible
- Location: Nowhere
Re: асемблер или c++
Syntax-a на C++ ще те научи на другите езици, също така на C++ се пише всичко бързо и лесно, само да си го знаеш, assambler е доста стар език, който освен при положение че ще кракваш нещо едва ли ще ти потрябва, макар че ти с времето, ако си добър ще стигнеш и до него. Предпочитам C++ винаги. Дано да имаш познания по един от езиците (някакви), защото 12ти клас е леко късно дори..
- sHoRtBG
- V.I.P
- Posts: 208
- Joined: 23 Jul 2010, 15:14
- Skype: short.bg
- CS Nick: sHoRt
- Favorite version: CS: 1.6
- Location: Сливен, България | Атина, Гърция
Re: асемблер или c++
Зависи какъв процент мазохизъм предпочиташ.. Асембли като език е нещо много динамично. Всяка архитектура процесори има своя имплементация на езика. Команди и т.н., глезотийки като if, while, for and so on ги няма. Там работиш с команди директно към процесора. Примерно if при χ86 архитектура (както и при повечето други) се прави като напишеш 2 блока в кода, един при true и един при false.. После сравняваш пойнтъри, и използваш GOTO/JMP/JNE (Всичко това са команди, които се използват в различни ситуации, и правят почти същите неща).
Простия начин да се направи while/for е следния:
За for цикъл, който ще прави 10 завъртания и нищо друго правиш следното:
#Заделяш два байта памет за буфера който ще се увеличава с една единица и даваш стойност нула:
mov DWORD PTR [rbp-4], 0
#Създаваш един блок който ще бъде тялото на цикъла ти:
.L2:
#Вътре слагаш проверка дали буфера ти е стигнал стойността в случая 10:
cmp DWORD PTR [rbp-4], 10
#Ако е стигнал изпращаш към друг блок:
jle .L1
#В противен случай вдигаш стойността му с една единица:
add DWORD PTR [rbp-4], 1
#И караш процесора да отиде в блок 2, в нашия случай това е същия блок в който в момента сме, и така става един вид цикъл:
jmp .L2
Като цяло така работи езика асембли, учим го в момента, тежко е, особено ако си нямаш хал-хабер от това как работи процесора. + че в момента не съм използвал точната терминология, ако искаш да го учиш поне научи какво е пойнтър и другите подобни. В асембли много неща се правят мнооого трудно.. Да не говорим, че това няма и да проработи ако го компилираш директно. Най-малкото, че не си заделил памет за програмата а и също паметта не е освободена.. Представи си, че "Здравей Свят" за χ86 architecture можеш да го напишеш най-кратко в около 20/25 реда код. На C++ става с 4/5, на скриптов език можеш и с 1/2... Абе първо тръгвай от C++ или нещо още по-просто като C или Java..
Простия начин да се направи while/for е следния:
За for цикъл, който ще прави 10 завъртания и нищо друго правиш следното:
#Заделяш два байта памет за буфера който ще се увеличава с една единица и даваш стойност нула:
mov DWORD PTR [rbp-4], 0
#Създаваш един блок който ще бъде тялото на цикъла ти:
.L2:
#Вътре слагаш проверка дали буфера ти е стигнал стойността в случая 10:
cmp DWORD PTR [rbp-4], 10
#Ако е стигнал изпращаш към друг блок:
jle .L1
#В противен случай вдигаш стойността му с една единица:
add DWORD PTR [rbp-4], 1
#И караш процесора да отиде в блок 2, в нашия случай това е същия блок в който в момента сме, и така става един вид цикъл:
jmp .L2
Като цяло така работи езика асембли, учим го в момента, тежко е, особено ако си нямаш хал-хабер от това как работи процесора. + че в момента не съм използвал точната терминология, ако искаш да го учиш поне научи какво е пойнтър и другите подобни. В асембли много неща се правят мнооого трудно.. Да не говорим, че това няма и да проработи ако го компилираш директно. Най-малкото, че не си заделил памет за програмата а и също паметта не е освободена.. Представи си, че "Здравей Свят" за χ86 architecture можеш да го напишеш най-кратко в около 20/25 реда код. На C++ става с 4/5, на скриптов език можеш и с 1/2... Абе първо тръгвай от C++ или нещо още по-просто като C или Java..
- GluckyT3AM
- V.I.P
- Posts: 167
- Joined: 10 Jan 2013, 15:01
- CS Nick: `
- Favorite version: CS: Global Offensive
- Location: Shrewsbury, Shropshire
- Contact:
Re: асемблер или c++
C++ , ще ти върши повече работа, но все пак ти си знаеш, а за assаmbler'а , тя е по-стара, тоест стар език, няма как за няколко дена/седмици да напишеш нещо, по твой вкус, по-добре ти предлагам да използваш c++ , отколкото стария език .
- SK Telecom T1
- Потребител
- Posts: 106
- Joined: 29 Sep 2009, 08:55
- Skype: blacktample
- CS Nick: Critfame
- Favorite version: CS: Global Offensive
- Steam Community ID: critfame
- Location: Varnawood
- Contact:
Re: асемблер или c++
Стар език Всички compilator-и в крайна сметка превръщат кода в асемблер.GluckyT3AM wrote:C++ , ще ти върши повече работа, но все пак ти си знаеш, а за assаmbler'а , тя е по-стара, тоест стар език, няма как за няколко дена/седмици да напишеш нещо, по твой вкус, по-добре ти предлагам да използваш c++ , отколкото стария език .
- GluckyT3AM
- V.I.P
- Posts: 167
- Joined: 10 Jan 2013, 15:01
- CS Nick: `
- Favorite version: CS: Global Offensive
- Location: Shrewsbury, Shropshire
- Contact:
Re: асемблер или c++
Това, че го компилират към асемблер, не значи, че ще има нещо по-интересно.