Софтуерно Инженерство
Loading...
+ Нов въпрос
VanessaShopping avatar VanessaShopping 48 Точки

Общи въпроси в сферата на програмирането И не само

Правя темата за тези като мен на които не им е станало много ясно или не са сигурни ,че са разбрали нещата правилно.

тема за обсъждане , коментиране и въпроси. Ще е хубаво и други да се включат с въпроси !

Какви видове софтуерни технологии има и две думи за всяка от тях ? front-end(потребителски интерфейс UI), back-end(работа с данни), server-side(сърварно програмиране),  други ?

Какви видове езици за програмиране има? Скриптов, обектно-ориантиран, интерпретируем и ....? 

За какво са предназначени? Примерно скриптовите езици като "JavaScript" и "PHP" се ползват най-вече за: .....?
Интересуват ме: C, C++, C#, Java, JavaScript, PHP, HTML, CSS, SQL(и каква е разлиакта с MySQL), Objective-C/ Swift, Ruby, Python 

Видове длъжности и тяхното задължение ? Софтуерен инженер, QA, програмист, Системен администратор, IT специалист, Мрежар(ланаджия), Уеб дизайнер ...др?

Класификация на програмните езици: Кое какво е, за какво е, що е, какви езици се ползват да речем в четвърто поколение, в обектно-ориантираните. С две думи малко разяснение.
    - Ниво на езика
        - Четвърто поколение
        - Високо ниво
        - Асемблерен език
        - Машинен език
    - Начин на изпълнение
        - Управляван от събития
        - Декларативни
        - Процедулни (алгоритмични езици) 
    - Начин на структуиране
        - Обектно-ориантирани
        - Модулни
        - Структурни

Може ,даже е желателно, да добавяте всякаква ценна информация , която съм пропуснал и ще е полезно да се знае :)

4
Общи приказки
RoYaL avatar RoYaL Trainer 6845 Точки
Best Answer

В тази тема има уравнение с много неизвестни и въпроси, на които за да се отговори синтезирано няма да стигне цяла вечност.

На въпросите може да се отговори на високо ниво, но за до пистгнеш резултатите, които очакваш (пр. да видя код и да позная дали е на PHP, Perl или Obj C) просто няма да се получи с това някой да ти го синтезира. Ще трябва да ти мине през ръцете по един или друг начин.

В повечето случаи, за да имаш такива широки познания, трябва да мине и известно време. Т.е. ако до момента си на ниво Programming basics, то шансовете са да знаеш, че има и други езици освен C#. Толкова :)

При мен как се стекоха нещата. Преди години от един вестник "Компютри" видях уроци по HTML. Когато интернетът беше dial-up и кредитите в картата на Mobisurf изтичат, ако се опиташ да намериш урок за програмиране в интернет. Правех си странички с бял фон, черен текст и хиперлинкове; таблички, леки оцветявания; формички и бутончета. После уроците в този вестник приключиха и аз приключих за известно време своята "кариера".

После интернетът спря да бъде мечта и имах кабелен такъв. Ама май вече не се интересувах толкова от това. Но пък по едно време се появи една игра дето е написана на РНР и мен ми стана много интересно как аджеба като цъкнеш някакво хиперлинкче започва да ти се строи сграда и да ти отброява таймер кога ще се построи.

Тръгнах да търся в интернет за тоя скапан таймер и разбрах, че се прави с JavaScript. И от девет кладенеца вода намерих как да си направя таймер в страницата. По-късно това щеше да ме накара да разбера, че JavaScript се ползва за фронтенд, т.е. за това което вижда човекът на екрана в браузъра и то за да е по-динамично (това преди да излезе NodeJS, който скапа нещата и направи JS да се пише и като back-end :D)

Добре, ама като таймерът приключи - мамка му, нищо не става на моята бяла страничка. А оная игра помнеше, че съм пуснал сграда им и показваше вече новото ниво. И то без значение колко време ме няма - като вляза пак, пак съм си на новото ниво сграда. Търсих в интернет, питах във форуми - смяха ми се, накрая разбрах, че се запазвало в база данни. Така разбрах за MySQL. Години по-късно ми се наложи да ползвам MS SQL Server и разбрах, че SQL е език, а другите две са нещо като имплементации на езика, за да се работи с релационни бази данни.

Тоя MySQL обаче трябваше нещо да го вика, за да запази последното ниво сграда и това беше РНР в моя случай. Разбрах, че се пише скрипт на PHP, за да комуникира с базата. Написах такъв. Като товориш скрипта записва едно ниво отгоре. Само дето като свърши таймера, не се вика тоя PHP скрипт. Търсих, търсих, намерих за асинхронно правене на заявки (ajax; xmlhttprequest, нещо което през 2005-та го заковаха с jQuery). Така разбрах, че има библиотеки за този JavaScript (като това jQuery). Впоследдствие разбрах, че около един език се въртят серия от скриптове, библиотеки, среди за разработка и прочие, които хората наричат технологични стекове (съвкупности) или технологии.

Когато се сблъсках с регулярните изрази в PHP и прочетох, че са Perl-compatible се зачетох що е това. Оказа се, че има такъв език Perl. Така горе-долу разбрах, че РНР има синтаксис на Perl до някъде.

(тук скипвам една голяма част от историята как научих голяма част от РНР покрай играта, това със сградите е само един малък пример:))

Когато се зачетох повече, разбрах че РНР е написан на С. Оказа се, че С не е просто стар език, който не се ползва, а нещо с което се гони огромно бързодействие, бидейки доста близко до машината и все пак с не особено труден за писане синтаксис. Години по-късно трябваше да обяснявам на едни момчета С за тяхната гимназия и се наложи да науча как се пишат и обикалят дървета на С. Не беше много по-различно като логика от останалите езици. Така горе долу ми стана ясно, че езиците за програмиране, също както и езиците за говерене, могат да принадлежат на езикова група. В случая Java, PHP, Perl, C++, C#, JavaScript и т.н. принадлежаха на "C" езиковата група (наричани още C-like езици).

Когато в гимназията се опитаха да ни накарат да задвижим един бутон, който те поздравява със "Здравей {еди-кой-си}" на Visual Basic 6, установих че има и гадни езици, дето не са от C-like групата. Тогава някъде започнах да осъзнавам, че книжката която си бях купил преди няколко години от Хеликон "Моята първа компютърна програма" (една жълта, с едно изветряло човече на корицата), в която се опитваха да ме научат как да накарам компютъра на beep-ва на QBasic, всъщност също ме е учила на език от същата група, но просто нищо не разбирах тогава. А именно BASIC - друга езикова група, друга парадигма, друг синтаксис.

Като ми се наложи да пиша автоматизирани тестове за вече изградени приложения, които трябваше както да тестват API-то така и да тестват визуалното му поведение се разтърсих как мога да направя това на език, на който вече имам стабилна база - РНР. Тогава ме удари студеният душ, в който разбрах, че не всичко се прави само с чук и пирони, а трябва да сменяш инструментите, според проблема.

Моят проблем не беше нерешим с РНР, но всяко едно проучване което правех клонеше главно към Java и към технологиите около нея (Selenium например). Наложи ми се да уча Java и технологията Selenium. Слава Богу беше от C-like езиците и не беше толкова трудно. Всъщност от един момент ученето на граматика спира да е трудната част.

Като вече бях понатрупал опит на няколко езика и технологии около тях, започнаха да идват проекти от най-различни типове, които вече бяха започнати на всевъзможни други езици, които трябваше да научавам. В един момент все по-малко започваха да ме изненадват различните парадигми на писане, стилове (колкото по-стар е проектът, толкова по-скапано беше написан) на писане, езици и технологии.

Никога не ме е интересувало от кое ниво е езикът, тъй като съм писал само на съвременни езици (май се водят от трето поколение). Но това, което силно ми е правило впечатление е дали е управляван от събитията (event-driven) - това са езици, в които всяко едно действие извиква предаврително създадено събитие, което евентуално върши друго действие и/или извиква или създава друго събитие. Всичко това кликане на бутони без да се презарежда страницата в браузъра е организирано от такава архитектура на събитията (JavaScript). Голяма част от десктоп приложенията също (Visual Basic който споменах по-горе е такъв език); интересува ме дали е обектно ориентиран - мога да организирам кода си в позната за мен парадигма с обекти, връзки между тях и зависимости от действия или пък е функционален и се налага да правя всичките си изчисления като функции и композиции между тях и да придавам пойнтъри към функции, вместо резултати, за да бъдат изпълнени впоследствие (Haskell като език, C#'s LINQ като технология, която разчита на това)

Какво искам да кажа с цялата тази история? Че просто трябва да тръгнеш по един път и да взимаш на час по лъжичка. Много ме радва фактът, че си заинтересуван от рано за по-широкоспектърните неща. Затова и се опитвам да ги разкажа по някакъв начин. Но истината е, че най-добре ще ги разбереш с това да си постоянно любопитен и постоянно да се сблъскваш с нови проблеми, които налагат нови решения, които пък изискват друг език, технология, начин на мислене, може и друг хардуер (телефон, микроконтролер...).

 

Успех и попътен вятър!

15
13/09/2016 14:48:25
b.yordanov avatar b.yordanov 146 Точки

При мен беше подобно, но покрай мен нито имаше списания, нито кой да ми обяснява тогава :(

0
YaneZ avatar YaneZ 33 Точки

Браво. Много ми харесва темата понеже и аз съм начинаещ. Успех!

0
ZornitsaSerbezova avatar ZornitsaSerbezova 454 Точки

"Примерно скриптовите езици като "JavaScript" и "PHP" се ползват най-вече за: .....?" Ползват се само (не най-вече) за създаване на уеб приложения. JavaScript за фронт-енд, а PHP за бек-енд.

SQL(и каква е разлиакта с MySQL) - SQL е език за програмиране, а MySQL е СУРБД (система за управление на релационни бази данни)

За видовете длъжности - IT специалист е общо понятие... Софтуерен инженер и програмист са почти едно и също. По принцип инженер е човек, който е завършил такава техническа специално в университет, а програмиста може и да не е учил висше. Иначе всички, описани от теб може да са маааалко по различни и с различно име, но са основно тези.

За нивото на езиците - ето за първо, второ, трето и четвърто поколение. Език от високо ниво е език, който е базиран на някаква разработена среда., . общо взето почти всички, които си изброил. Езиците от ниско ниво, са езиците като асемблер, които управляват директно порцесора.

Малко не разбирам каква е идеята на темата ти. Да си избереш в какво да се развиваш ли? Иначе в интернет има много информация.

1
13/09/2016 14:22:01
VanessaShopping avatar VanessaShopping 48 Точки

Идеята на темата ми е да се навлезе по-надълбоко в програмирането. Не само да знаеш ... да аз пиша на C# и толкова. Ако искам да стана добър програмист трябва да се запозная с цялата материя и да се развивам там където ми харесва.

Избирам езика C# , но трябва да знам и какво друго има... дори и да не го ползвам. С две думи някой ден като погледна някой код да кажа... да това е писано на Java или на PHP и ето това е имал в предвид човека който е писал кода. 

Според мен е полезно да се запозная, и не само аз, с видовете езици, технологии ....

Смятам ,че е важно освен да можеш да програмираш на даден език и да знаеш какъв е той за какво се ползва, за какво не се ползва, за какво е подходящ и за какво не. Да речем ,че съм схванал как се пише на C# и решавам да напиша игра. Ако е малка и проста най-вероятно ще стане. Но ако е голяма и знам ,че със C++ е по-добрия вариянт, ще започна да пиша на C++ :)

Друго: Ако знам какви технологиии има и съм запознат с тях, мога по-лесно да избера с какво точно искам да се занимавам.

От курса който завърших Programming Basics научих как се мисли логически, научих какво е цикъл, масив ,условна конструкция,  методи , масиви , списъци ...т.н.  Мога да реша ( и съм решил поне половината ) изпитите в повечето случаи без никаква помощ , дори и от гугъл, msdn , stackoverflow

И да в интернет има много информация за всичко това, но понякга е объркваща или неразбираема или не съм сигурен дали това което съм разбрал е наистина така( тоест научавам нещо с леки съмнения ) , поне за начинаещ като мен.

Примерно търсих за видове технологии и открих fron-end , back-end , server-side, и още 2-3 които не съм сигурен дали са технологии... Ето жив пример за съмнение ,което имам. От сайта на Наков прочетох това:

"Други технологии и платформи (ако се наложи): мобилни платформиcloud технологиисофтуерно инженерствооперационни системи,вградени системи, езици от по-ниско ниво като C и C++"

И сега въпроса ми е Софтуерното инжинерство технология ли е ? Какво ще рече това технология ?

 

ПС: Само за пояснение :) не съм жена, предполагам си се объркала от никнейма ми "общо взето почти всички, които си изброилА

0
ZornitsaSerbezova avatar ZornitsaSerbezova 454 Точки

Ето какво е технология: https://bg.wikipedia.org/wiki/%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F

софтуерното инженество не е технология.

Или пък е технология, но не в смисъла на софтуерна технология.

Ако завършиш някакво висше в областта на информационните технологии, ще ги научиш всички тези неща.

 

1
13/09/2016 14:27:34