Автор Тема: системни и приложни езици  (Прочетена 5300 пъти)

gangov

  • Напреднали
  • *****
  • Публикации: 141
  • Distribution: Ubuntu 14.04
  • Window Manager: Unity
    • Профил
Здравейте, може ли някой да ми обясни по по-простичък начин разликата между системните и приложните програмни езици. По няколко примера за всеки, кои са по лесни за усвояване за новак, Python от кои точно е и къде се използват едните и другите?
Активен

-----------------------------------------------------------------------------------------------------------------
65 62 61 20 6c 75 69 62 6f 70 69 74 6e 69

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 6653
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Re: системни и приложни езици
« Отговор #1 -: Oct 03, 2012, 20:21 »
Така-а-а.  ;D Ай сега де? Добре. Ще се пробваме. Казано най-ламерски системни са тези дето можеш да пишеш основата на операционна система на тях. Не е точно академично обяснено, а нямам и образование.

Приложни, отново името подсказва. На тях можеш да пишеш приложения в най-широкия смисъл на думата.

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

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

Споко, ако те обърках съвсем, сега ще додат ората с дипломите да обяснят нещата.
« Последна редакция: Oct 03, 2012, 20:23 от go_fire »
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

gangov

  • Напреднали
  • *****
  • Публикации: 141
  • Distribution: Ubuntu 14.04
  • Window Manager: Unity
    • Профил
Re: системни и приложни езици
« Отговор #2 -: Oct 03, 2012, 20:42 »
Така-а-а.  ;D Ай сега де? Добре. Ще се пробваме. Казано най-ламерски системни са тези дето можеш да пишеш основата на операционна система на тях. Не е точно академично обяснено, а нямам и образование.

Приложни, отново името подсказва. На тях можеш да пишеш приложения в най-широкия смисъл на думата.

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

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

Споко, ако те обърках съвсем, сега ще додат ората с дипломите да обяснят нещата.

 ;D ;D ;D благодаря за инфото  [_]3 Чакам и други мнения
Активен

-----------------------------------------------------------------------------------------------------------------
65 62 61 20 6c 75 69 62 6f 70 69 74 6e 69

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: системни и приложни езици
« Отговор #3 -: Oct 04, 2012, 12:41 »
По принцип аз знам за System programming (Системно програмиране) и Application programming (Приложно програмиране). Ще се опитам с няколко думи и без претенции за пълна прецизност да разкажа...

Системно програмирене е да пишеш програмки, които да си говорят директно с ОС, изискват услуги от нея, управляват ресурсите ѝ. Примери за системен софтуер са основните команди, които пускаш от конзола (coreutils в GNU) - cat, wc, ls, head и т.н., различните сървъри за услуги (уеб сървъри (apache и ко), пощенски сървъри (postfix и ко), СУБД(postrgres и ко) и т.н.), програмирането на ядра и модули за ядра мисля, че също влизаше, програмирането на компилатори и интерпретатори за езици за програмиране, програмки от сорта на mdadm, lmsensors и неща в подобен дух.

За да си говори директно със системата, системният софтуер ползва основно библиотеките за езика си и системните функции (примитиви, ABI) на твоята ОС.

Приложен софтуер е нещо като едно ниво над системния. Например - nautilus, dolphin и ко са файлови мениджъри, които ти използваш, за да си управляваш файловете. Те са направени с удобен интерфейс, ориентиран в услуга на теб, потребителя. На практика те са една приложна обвивка на системни програми като ls, cp, mv, rm и т.н. Системните програми често дефинират API, чрез което приложните програми да могат да се свързват с тях и да ги викат в своя услуга.

Приложен софтуер (application) е твоя уеб браузър, пощенски клиент, phpMyAdmin, графичните инструменти за конфигуриране на хардуер, IDE-тата и още много други.

Има и нещо, наречено middleware, което е по средата между тези две „нива“. За пример дават TCP/IP стека.


Аз не бих посмяла да разделя езиците на системни и приложни. C е типичен пример, тъй като има много системен софтуер, изписан на него, но това не означава, че няма както системен софтуер, написан на друг език, така и приложен софтуер, написан на C. За мен system и application са прилагателни за програмите, не за езиците.

За Python - мисля, че на него съвсем спокойно може да пишеш не само приложен, но и системен софтуер. Пример за системен софтуер, написан на Python, би трябвало да е PyPy.

И, накрая, относно Python за новаци - Python е ООП език. Добре е първо да имаш предства за процедурно програмиране с някой подходящ за това език (типични примери май са C, Pascal, Perl също може да мине), а в последствие да се запознаеш с обектно-ориентирания начин на мислене. Лично мое мнение е, че Python има по-хубава ООП парадигма от Java и C++, така че би трябвало да е добър избор за научаване на ООП.
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: системни и приложни езици
« Отговор #4 -: Oct 22, 2012, 17:07 »
Я дай повече инфо за смоку че не се сещам за какво става въпрос..
Активен

v_badev

  • Напреднали
  • *****
  • Публикации: 1355
    • Профил
Re: системни и приложни езици
« Отговор #5 -: Oct 22, 2012, 18:00 »
Като знам начина на изразяване на go_fire, най-вероятно Смоку е Python, а бъзик е Basic.
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: системни и приложни езици
« Отговор #6 -: Oct 22, 2012, 18:12 »
Абе и аз така си мислех ама не бях сигурен.. иначе по въпроса кво спорите асеблер си е най-добър  :D
Активен

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: системни и приложни езици
« Отговор #7 -: Oct 22, 2012, 22:45 »
кво спорите
Кой спори?  ???

Цитат
асеблер
Асе кой? И той хубаво си е най-добър, ама можеш ли да живееш в свят, в който се пише само на асемблер?
Активен

Naka

  • Напреднали
  • *****
  • Публикации: 3034
    • Профил
Re: системни и приложни езици
« Отговор #8 -: Oct 22, 2012, 23:01 »
И аз да попитам......

'Смоку' това на шопски ли е? ??? ??? ???
Активен

Perl - the only language that looks the same before and after encryption.

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: системни и приложни езици
« Отговор #9 -: Oct 23, 2012, 00:59 »
И аз да попитам......

'Смоку' това на шопски ли е? ??? ??? ???
На гоу-файърски е.  ;D Той така си приказва, не сте ли му свикнали? ;)
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: системни и приложни езици
« Отговор #10 -: Oct 23, 2012, 01:05 »
Това хората които пишат на асемблер, доколкото са останали, тяхното им е лесно, като на американците. Имам предвид - американец да си купи примерно БМВ, това си е за престиж. Европеец да си купи някоя голяма американска кола, примно онези големите Додж-ове, ей така щото можел да контролира силата....това си е педалщина и комплексарщина. Та така, същото е и с асемблера :)
Активен

"Knowledge is power" - France is Bacon

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: системни и приложни езици
« Отговор #11 -: Oct 23, 2012, 18:39 »
Е вие пък .. не казвам ,че пиша само на асемблер но искам да ви кажа че този език, колкото и да е глупав и труден може да се ползва както за направа на програми, така и за операционни системи. Разликата е само 5 асемблерови реда между това да направиш ос и програма. И между другото, вного хора си мислят ,че това е някакъв много труден и загубен език, но всъщност не е така. Като започнеш веднъж , после всичко е лесно. Аз лично се научих първо да пиша на микроконтролери ,а после го приложих и за компютър.
Естествено аз не пиша всичко на асемблер, дори не ми е фаворит ,но просто е много бърз. Любимият ми език всъщност е С++.
Активен

v_badev

  • Напреднали
  • *****
  • Публикации: 1355
    • Профил
Re: системни и приложни езици
« Отговор #12 -: Oct 24, 2012, 12:26 »
Основният проблем с писането на асемблер е че кода не може да се портне за друг процесор, а трябва да се пренаписва изцяло. Не случайно в повечето операционни системи почти няма код на асемблер. Дори и в ffmpeg асемблер се ползва много рядко и е опционален.
Активен

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 6653
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Re: системни и приложни езици
« Отговор #13 -: Oct 25, 2012, 00:22 »
Е не, не съм чак толкова голям да го измисля сам. Всъщност си е програмистки жаргон и аз не много отдавна разбрах, че програмистите му викате тъй.

За асемлера. Да хубав си е, спор няма. И да не е труден. Май само езика FUCK има по-малко инструкции, ама и за това не съм сигурен. Проблема му не е в трудността, нито в преносимостта. Проблема му е, че трябва да се пише страшно много код, а това вече не е за всеки гамен. 
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: системни и приложни езици
« Отговор #14 -: Oct 25, 2012, 01:22 »
Броят на инструкциите зависи изцяло от процесорната архитектура - CISC такава - примерно x86 - има доста, във всеки случай далеч повече отколкото оператори и запазени думи има в езика C. И проблемът с преносимостта си е изначален, не може да пишеш на машинен език и това да е преносимо. Елементарен пример е това да речем:


Цитат

   0x0000000000400498 <+4>:     mov    0x2003e2(%rip),%edx       
   0x000000000040049e <+10>:    mov    0x2003e0(%rip),%eax       
   0x00000000004004a4 <+16>:    add    %edx,%eax
   0x00000000004004a6 <+18>:    mov    %eax,-0x4(%rbp)
   0x00000000004004a9 <+21>:    mov    -0x4(%rbp),%eax
   0x00000000004004ac <+24>:    mov    %eax,0x2003d2(%rip)       

...и:

Цитат
00 ALU: ADDR(32) CNT(12) KCACHE0(CB0:0-15) KCACHE1(CB1:0-15)
      0  y: LSHL        ____,  R1.x,  6     
      1  x: ADD_INT     ____,  R0.x,  PV0.y     
      2  w: ADD_INT     ____,  PV1.x,  KC0[6].x     
      3  z: LSHL        ____,  PV2.w,  2     
      4  y: ADD_INT     ____,  KC1[0].x,  PV3.z     
         z: ADD_INT     ____,  KC1[1].x,  PV3.z     
      5  x: LSHR        R2.x,  PV4.y,  2     
         y: LSHR        R0.y,  PV4.z,  2     
         w: LSHR        R0.w,  PV4.y,  2     
01 TEX: ADDR(48) CNT(2)
      6  VFETCH R0.x___, R0.w, fc153  MEGA(4)
         FETCH_TYPE(NO_INDEX_OFFSET)
      7  VFETCH R1.x___, R0.y, fc153  MEGA(4)
         FETCH_TYPE(NO_INDEX_OFFSET)
02 ALU: ADDR(44) CNT(1)
      8  x: ADD_INT     R0.x,  R0.x,  R1.x     
03 MEM_RAT_CACHELESS_STORE_RAW: RAT(11)[R2].x___, R0, ARRAY_SIZE(4)  MARK  VPM

И двете са асемблерен код, който зарежда от два определени адреса в паметта две стойности, събира ги и ги записва обратно в паметта. Едното е за x86, другото е за AMD GPU-та. Няма големи прилики май :) За разлика от това,C кода е почти идентичен.
« Последна редакция: Oct 25, 2012, 01:32 от gat3way »
Активен

"Knowledge is power" - France is Bacon