- Програмски језици се класификују према нивоу апстракције, парадигми, намени, начину извршавања и генерисању.
- Језици високог нивоа су лакши за коришћење, док језици ниског нивоа нуде већу контролу над хардвером.
- Избор правог језика утиче на перформансе, продуктивност и одржавање софтвера.
- Тренутни трендови укључују вишепарадигматске језике и приступе конкурентном и квантном програмирању.
Класификација програмских језика
- Према вашем нивоу апстракције
- Програмском парадигмом
- Према намени језика
- На основу форме извршења
- По генерацијама
Класификација програмских језика према њиховом нивоу апстракције
Језици ниског нивоа
- Машински језик: То је најнижи ниво програмирања, који се састоји од низова бинарних бројева које рачунар интерпретира као инструкције.
- Језик асемблера: То је корак изнад машинског језика, користећи мнемонику за представљање операција.
Језици високог нивоа
- Већа апстракција детаља хардвера
- Синтакса ближа људском језику
- Већа преносивост између различитих платформи
- Бржи развој и мање склон грешкама
- Питон
- Јава
- Ц + +
- JavaScript
- рубин
Класификација програмских језика по програмској парадигми
Императивно програмирање
- Фокусира се на описивање како се задатак изводи корак по корак.
- Користите стања и промене стања да бисте постигли жељени резултат
- Интуитивно је за многе програмере, јер личи на начин на који дајемо упутства у стварном животу.
- C
- Паскал
- ОСНОВНИ
декларативно програмирање
- Фокусира се на жељени резултат, а не на кораке за постизање истог
- Често резултира сажетијим и лакшим за разумевање кода.
- Може бити ефикасније у одређеним врстама проблема, посебно у обради података.
- СКЛ
- Пролог
- Хаскелл (иако је такође функционалан)
Објектно оријентисано програмирање
- Енкапсулација: Групише повезане податке и методе у објекте
- Наслеђивање: Омогућава класама да наслеђују својства и методе из других класа
- Полиморфизам: омогућава да се објекти различитих класа третирају уједначено
- Јава
- Ц + +
- Питхон (иако је мултипарадигма)
Функционално програмирање
- Чисте функције: увек дају исти резултат за исте аргументе
- Непроменљивост: Подаци се не мењају када су направљени
- Рекурзија: предност пред итеративним контролним структурама
- Хаскелл
- шушкање
- Ерланг
Класификација према намени језика
Језици опште намене
- Флексибилност за решавање различитих врста проблема
- Велика база корисника и доступни ресурси
- Обично имају комплетан скуп функција
- Питон
- Јава
- Ц + +
- JavaScript
- рубин
Језици специфични за домен
- Синтакса и семантика прилагођена одређеном домену
- Већа ефикасност у решавању проблема у вашем домену
- Они генерално имају краћу криву учења за стручњаке из домена
- SQL за манипулацију базама података
- ХТМЛ за структурирање веб садржаја
- Р за статистичку анализу и визуелизацију података
- МАТЛАБ за математичке и научне прорачуне
Класификација програмских језика на основу начина на који се извршавају
Састављени језици
- Већа брзина извршења
- Изворни код није потребан за извршење
- Откривање грешака у време компајлирања
- Генерално специфично за платформу
- C
- Ц + +
- Go
- Рђа
Тумачени језици
- Већа флексибилност и лакоћа развоја
- Преносивост између различитих платформи
- Спорије извршење у поређењу са компајлираним језицима
- За извршење је потребан изворни код
- Питон
- рубин
- JavaScript
- PHP
- Перформансе: Ако је брзина извршавања критична, компајлирани језик може бити најбољи избор.
- Преносивост: Ако вам је потребно да ваш код ради на различитим платформама без модификација, интерпретирани језик може бити прикладнији.
- Развојни циклус: Интерпретирани језици обично омогућавају бржи развој и лакше отклањање грешака.
- Сигурност изворног кода: Ако не желите да дистрибуирате свој изворни код, компајлирани језик нуди већу заштиту.
Класификација по генерацијама
Од прве до пете генерације
- Прва генерација (1ГЛ): Мацхине лангуаге
- Састоји се од секвенци од 0с и 1с
- Директно извршљив од стране процесора
- Људима је изузетно тешко писати и одржавати
- Друга генерација (2ГЛ): Ассембли лангуаге
- Користите мнемотехнику да представите машинска упутства
- Захтева асемблер да га конвертује у машински језик
- Читљивији од машинског језика, али и даље веома близак хардверу
- Трећа генерација (3ГЛ): Језици високог нивоа
- Укључује језике као што су Ц, Ц++, Јава, Питхон
- Ближе природном језику
- Они вам омогућавају да пишете машински независан код
- Они захтевају компајлере или тумаче за њихово извршење
- Четврта генерација (4ГЛ): Језици оријентисани на специфичне апликације
- Дизајниран за одређене типове апликација (нпр. SQL за базе података)
- Они омогућавају да се апликације развијају брже од 3ГЛ-а
- Често укључују визуелне или декларативне функције програмирања.
- Пета генерација (5ГЛ): Језици засновани на ограничењима
- Они се фокусирају на решавање проблема и ограничења пре него на алгоритме
- Користе вештачку интелигенцију и машинско учење
- Још увек у развоју и ређе од претходних генерација
- Повећана продуктивност програмера
- Мање времена развоја
- Лакши за одржавање и отклањање грешака кода
- Већа доступност за људе без дубоке техничке обуке
Утицај класификације на развој софтвера
Избор правог језика за сваки пројекат
- За фронтенд веб развој, интерпретирани језици високог нивоа као што је ЈаваСцрипт су идеални због њихове интеграције са веб претраживачима.
- За уграђене системе или софтвер ниског нивоа, компајлирани језици ниског нивоа попут Ц могу бити најбољи избор због њихове ефикасности и контроле над хардвером.
- За анализу података и машинско учење, језици као што су Питхон или Р, који имају моћне специјализоване библиотеке, се широко користе.
Утицај на перформансе и ефикасност
- Преведени језици генерално нуде боље перформансе током извршавања.
- Језици нижег нивоа омогућавају прецизнију оптимизацију, али по цену споријег и сложенијег развоја.
Утицај на продуктивност програмера
- Језици високог нивоа и 4ГЛ могу убрзати развој одређених апликација.
- Језици са јаким системом типова могу помоћи у спречавању грешака током компајлирања, штедећи време у отклањању грешака.
Одрживост и скалабилност кода
- Језици са добром модуларношћу, као што су они који подржавају објектно оријентисано програмирање, могу олакшати одржавање великих пројеката.
- Функционални језици могу бити погоднији за истовремене и дистрибуиране системе.
Будући трендови у класификацији програмских језика
- Мултипарадигмски језици: Све више језика усваја карактеристике из више парадигми, бришући границе између традиционалних класификација.
- Фокусирајте се на истовременост и паралелизамСа порастом вишејезгарних и дистрибуираних система, језици који олакшавају истовремено програмирање добијају на значају.
- Специфични језици за АИ и машинско учење: Како ове технологије постају све распрострањеније, могли смо да видимо појаву нових класификација фокусираних на могућности вештачке интелигенције.
- Квантно програмирање: Са развојем квантних рачунара, вероватно ћемо видети да се појављују нове класификације за језике дизајниране посебно за ову врсту хардвера.
- Већа апстракција: Тренд ка језицима вишег нивоа ће се наставити, са фокусом на то да програмирање учини доступнијим широј публици.
Закључак о класификацији програмских језика
Често постављана питања о класификацији програмских језика
-
Који је програмски језик данас најчешће коришћен?
2. Да ли је боље научити компилирани или интерпретирани језик?
3. Како програмска парадигма утиче на начин размишљања програмера?
4. Који језици се препоручују за почетнике?
5. Како је класификација програмских језика еволуирала током времена?
Индекс
- 1 Класификација програмских језика
- 2 Класификација програмских језика према њиховом нивоу апстракције
- 3 Класификација програмских језика по програмској парадигми
- 4 Класификација према намени језика
- 5 Класификација програмских језика на основу начина на који се извршавају
- 6 Класификација по генерацијама
- 7 Утицај класификације на развој софтвера
- 8 Будући трендови у класификацији програмских језика
- 9 Закључак о класификацији програмских језика
- 10 Често постављана питања о класификацији програмских језика
- 10.1 Који је програмски језик данас најчешће коришћен?
- 10.2 2. Да ли је боље научити компилирани или интерпретирани језик?
- 10.3 3. Како програмска парадигма утиче на начин размишљања програмера?
- 10.4 4. Који језици се препоручују за почетнике?
- 10.5 5. Како је класификација програмских језика еволуирала током времена?
