Разбирам ли програмирането правилно?
Аз съм начинаещ, който изучава програмиране чрез сравнително изучаване на езиците за програмиране, използвани в предметната област, която ме интересува - Web dev. Правя това, за да науча няколко езика и по-конкретно техните общи функционални свойства, елементи и техники за кодиране, като създавам същите програми с тях, за да се чувствам уверен, преди да се опитам да изградя кариера в предметната област.
Искам да знам дали разбирам правилно самия процес, самата същност на програмирането, и аз го виждам по следния начин:Програмирането е способността да се кодират алгоритми, предназначени за изпълнение от процесора, на език, чийто синтаксис, след етапите на преобразуване на символни маски в последователност от електрически сигнали, е предназначен да бъде разбран от процесора. В резултат на кодирането на алгоритъма/ите се получава компютърна програма. Алгоритмите трябва правилно да използват типове данни и структури в съответствие с начина, по който са кодирани в паметта и интерпретирани от процесора.
Форматът за интерпретиране на данни и тяхното кодиране в паметта, както и списъкът с инструкции, които процесорът може да изпълни, са предварително определени от производителя на процесора и описани в Архитектурата на набора от инструкции на процесора?
Ето още един въпрос: ISA определя ли как данните се кодират в паметта, или определя само как тези данни се интерпретират от процесора? Ако ISA не дефинира кодиране на данни, тогава какво прави?
Ето още един вълнуващ въпрос: ако програмирането е започнало с болезненото директно въвеждане на последователности от двоични електрически сигнали в машината за интерпретация, тогава как е създаден първият текстов интерпретатор?програми?
А ти. Изглежда, че сте копирайтър и пишете статия на тема, която изобщо не разбирате. От изобилието от красиви думи изявлението не става по-умно.
GMP е безплатна библиотека за аритметика с произволна точност, работеща с цели числа със знак, рационални числа и числа сплаваща запетая.
Форматът за интерпретиране на данни и тяхното кодиране в паметта, както и списъкът с инструкции, които процесорът може да изпълни, са предварително определени от производителя на процесора и описани в Архитектурата на набора от инструкции на процесора?
Да, разбирате правилно. Производителите на процесори, разбира се, се опитват да стандартизират своите архитектури, но и AMD, и Intel все още имат нюанси (ако разглеждаме само персонални компютри).
По принцип за PC (конкретно за PC) има определен x86 стандарт, както и неговото x86-64 разширение. Той е този, който описва набора от инструкции, флагове и клетки с данни (регистри), достъпни за програмиста. В рамките на този стандарт всяка инструкция има свой собствен операционен код.
Тези. след компилиране на програмата в машинен код (двоична последователност), командните кодове на операции ще бъдат еднакви за всички x86-съвместими процесори (т.е. компилирането не е за отделен процесор, а за архитектурата и има много самите архитектури, x86, ARM и т.н.). Това прави възможно стартирането на програми с еднакъв резултат на процесори Intel и AMD.
Програмирането е способността да се кодират алгоритми, предназначени за изпълнение от процесор на език, чийто синтаксис, след етапите на преобразуване на символни маски в последователност от електрически сигнали, е предназначен да бъде разбран от процесора.
Ако разгледаме само самия процес на кодиране, тогава нещо подобно е. Но сега терминът "програмиране" означаванещо повече от обикновен набор от инструкции от клавиатурата. Програмирането е приложна наука. Без предметна област програмирането по принцип не съществува. Темната област често определя какви ще бъдат езикът и инфраструктурата.
От програмиста се изисква не само да набие алгоритъма и да компилира изходния код, но често този алгоритъм трябва първо да бъде измислен/комбиниран. Без познаване на предметната област това отново няма да работи или ще работи, но неефективно.
За съжаление, такива задачи не се покриват от програмисти от друга специалност, например системни инженери - т.к. те са склонни да пишат неща на много ниско ниво: драйвери на устройства, модули на ядрото на ОС и т.н. следователно е много желателно уеб разработчиците да могат да правят това.
В 90% от задачите, разбира се, това не е необходимо (особено там, където трябва да "издърпате оформлението на двигателя" =D), но ако искате да израснете като професионалист и да покриете целия набор от възможни задачи в мрежата, тогава това, както се казва, трябва да имате.