unix — всё по этой теме для программистов


Оглавление (нажмите, чтобы открыть):

рТПЗТБННЙТПЧБОЙЕ Ч пу UNIX. пВЪПТ

упдетцбойе

1. ччедеойе

ч 1983 ЗПДХ лЕО фПНРУПО Й дЕООЙУ тЙФЮЙ ВЩМЙ ХДПУФПЕОЩ рТЕНЙЙ фШАТЙОЗБ бУУПГЙБГЙЙ рПМШЪПЧБФЕМЕК чЩЮЙУМЙФЕМШОЩИ нБЫЙО (ACM) ЪБ ТБЪТБВПФЛХ ПРЕТБГЙПООПК УЙУФЕНЩ UNIX. ч БООПФБГЙЙ, Ч ЮБУФОПУФЙ, ЗПЧПТЙМПУШ:

хУРЕИ УЙУФЕНЩ UNIX ПУОПЧЩЧБЕФУС ОБ ХДБЮОПН ЧЩВПТЕ ОЕУЛПМШЛЙИ ЛМАЮЕЧЩИ ЙДЕК Й ЙИ ЬМЕЗБОФОПК ТЕБМЙЪБГЙЙ. вМБЗПДБТС УЙУФЕНЕ UNIX РПСЧЙМПУШ РПЛПМЕОЙЕ ТБЪТБВПФЮЙЛПЧ РТПЗТБННОПЗП ПВЕУРЕЮЕОЙС У ОПЧПК ЙДЕПМПЗЙЕК РТПЗТБННЙТПЧБОЙС, ПУОПЧПК ЛПФПТПК СЧМСЕФУС НОПЗПЛТБФОПЕ ЙУРПМШЪПЧБОЙЕ ЙНЕАЭЙИУС РТПЗТБНН.

дПМЦОЩ МЙ РТПЗТБННЙУФЩ, ЙУРПМШЪХАЭЙЕ пу UNIX, ЙОФЕТЕУПЧБФШУС ФЕН, ЮФП ДЕМБМЙ фПНРУПО Й тЙФЮЙ? йНЕЕФ МЙ ЬФП УЕЗПДОС ЛБЛПК-МЙВП УНЩУМ? ьФП ОЕПВИПДЙНП, РПУЛПМШЛХ РПОЙНБОЙЕ ЙДЕПМПЗЙЙ, ЪБМПЦЕООПК Ч РТПЕЛФ УЙУФЕНЩ, Б ФБЛЦЕ ЪОБОЙЕ БФНПУЖЕТЩ, Ч ЛПФПТПК РТПИПДЙМБ ЕЕ ТЕБМЙЪБГЙС, УРПУПВУФЧХЕФ ОБЙВПМЕЕ ВЩУФТПНХ ЕЕ ПУЧПЕОЙА.

1.1 рТЕДЩУФПТЙС

чПЪНПЦОП, чЩ ХЦЕ ЮЙФБМЙ П ФПН, ЮФП РЕТЧПОБЮБМШОП ТЕБМЙЪБГЙС ОПЧПК ПРЕТБГЙПООПК УЙУФЕНЩ, ЧРПУМЕДУФЧЙЙ ОБЪЧБООПК UNIX, РТПЧПДЙМБУШ ЗТХРРПК лЕОБ фПНРУПОБ Й дЕООЙУБ тЙФЮЙ ОБ ОЕЙУРПМШЪХЕНПН ЛПНРШАФЕТЕ DEC PDP-7, УФПСЧЫЕН Ч ЛПТЙДПТЕ AT&T Bell Laboratories. рТЙЮЕН ГЕМША ЬФЙИ ТБВПФ ВЩМП РПУФТПЕОЙЕ ХДПВОПЗП ПЛТХЦЕОЙС ДМС УПВУФЧЕООПЗП ЙУРПМШЪПЧБОЙС. оЙЛФП ОЕ УПВЙТБМУС ТБЪТБВБФЩЧБФШ ПРЕТБГЙПООХА УЙУФЕНХ, УРПУПВОХА ЪБЧПЕЧБФШ НЙТПЧХА ЙЪЧЕУФОПУФШ.

йОФЕТЕУОП РТПУМЕДЙФШ РПУМЕДПЧБФЕМШОПУФШ, Ч ЛПФПТПК ТЕБМЙЪПЧЩЧБМЙУШ ТБЪМЙЮОЩЕ ЬМЕНЕОФЩ ПРЕТБГЙПООПК УЙУФЕНЩ. уОБЮБМБ ВЩМБ РПУФТПЕОБ РТПУФБС ЖБКМПЧБС УЙУФЕНБ, ОЕ ЙНЕАЭБС ДТЕЧПЧЙДОПК УФТХЛФХТЩ. ъБФЕН ПОБ ВЩМБ ПТЗБОЙЪПЧБОБ ЛБЛ УЙУФЕНБ ЛБФБМПЗПЧ Й ЖБКМПЧ. зПЧПТС П ЖБКМБИ, ОЕПВИПДЙНП РПДЮЕТЛОХФШ ДЧЕ ПУОПЧОЩЕ ЙДЕЙ. чП-РЕТЧЩИ, Ч пу UNIX ДБООЩЕ, РТПЗТБННЩ, ЛБФБМПЗЙ Й ДБЦЕ ЖЙЪЙЮЕУЛЙЕ ХУФТПКУФЧБ ТБУУНБФТЙЧБАФУС ЛБЛ ЖБКМЩ ФПЗП ЙМЙ ЙОПЗП ФЙРБ. чП-ЧФПТЩИ, УБН ЖБКМ РПОЙНБЕФУС ЛБЛ ПДОПНЕТОЩК НБУУЙЧ ВБКФ, МЙЫЕООЩК ЛБЛПК-МЙВП ДТХЗПК УФТХЛФХТЩ. пЮЕЧЙДОПУФШ Й РТПУФПФБ ФБЛПЗП РПДИПДБ УРПУПВУФЧПЧБМЙ РПУФТПЕОЙА ХДПВОПЗП ПЛТХЦЕОЙС ЛБЛ ДМС РТПЗТБННЙУФПЧ, ФБЛ Й ДМС ДТХЗЙИ РПМШЪПЧБФЕМЕК.

уМЕДХАЭБС ЙДЕС УПУФПСМБ Ч ФПН, ЮФПВЩ ТБУУНБФТЙЧБФШ ЧЩРПМОСАЭЙЕУС РТПЗТБННЩ ЛБЛ РТПГЕУУЩ. рТЙ ЬФПН ЛБЦДЩК РТПГЕУУ НПЦЕФ РПТПЦДБФШ ДТХЗПК Й ПВНЕОЙЧБФШУС У ОЙН ЙОЖПТНБГЙЕК. ч ТЕЪХМШФБФЕ ФБЛПЗП РПДИПДБ УФБМП ЕУФЕУФЧЕООЩН ТБЪДЕМЕОЙЕ УЕЗНЕОФПЧ ЛПНБОД НЕЦДХ ОЕУЛПМШЛЙНЙ РТПГЕУУБНЙ (ЬФП СЧМСЕФУС ИБТБЛФЕТОПК ПУПВЕООПУФША пу UNIX).

оБЛПОЕГ, ЛПЗДБ ВЩМЙ ТЕБМЙЪПЧБОЩ ЛПНБОДЩ ДМС ТБЪМЙЮОЩИ ДЕКУФЧЙК У ЖБКМБНЙ Й БУУЕНВМЕТ ДМС ЗЕОЕТБГЙЙ ЧЩРПМОСЕНЩИ РТПЗТБНН, УЙУФЕНБ ХЦЕ НПЗМБ БЧФПОПНОП ЖХОЛГЙПОЙТПЧБФШ.

уМЕДХАЭЙН ЧБЦОЩН ЫБЗПН ВЩМП РТЙПВТЕФЕОЙЕ ЛПНРШАФЕТБ DEC PDP-11 Й ХУФБОПЧЛБ ОБ ОЕН ОПЧПК ПРЕТБГЙПООПК УЙУФЕНЩ. рП НОЕОЙА тЙФЮЙ ЬФП ВЩМБ ВПМШЫБС ХДБЮБ, РПУЛПМШЛХ PDP-11 ВЩМБ ПЮЕОШ ИПТПЫЕК НБЫЙОПК Й ХУРЕИ УБНПЗП ЛПНРШАФЕТБ Ч ПРТЕДЕМЕООПК УФЕРЕОЙ УРПУПВУФЧПЧБМ РТЙЪОБОЙА ПРЕТБГЙПООПК УЙУФЕНЩ, УФБЧЫЕК ЙЪЧЕУФОПК РПД ОБЪЧБОЙЕН UNIX.

л 1972 ЗПДХ Ч УЙУФЕНЕ ВЩМБ ТЕБМЙЪПЧБОБ ЧПЪНПЦОПУФШ ПТЗБОЙЪБГЙЙ НЕЦРТПГЕУУОЩИ ЛБОБМПЧ (ФБЛПЗП УРПУПВБ УЧСЪЙ, РТЙ ЛПФПТПН ЧЩЧПД ПДОПЗП РТПГЕУУБ УФБОПЧЙФУС ЧЧПДПН ДТХЗПЗП). пРЕТБГЙПООБС УЙУФЕНБ ВЩМБ РЕТЕРЙУБОБ ОБ СЪЩЛБИ ВПМЕЕ ЧЩУПЛПЗП ХТПЧОС (УОБЮБМБ ОБ СЪЩЛЕ B, ЪБФЕН C) Й РПМХЮЙМБ ОБЪЧБОЙЕ UNIX, РТЙДХНБООПЕ вТБКБОПН лЕТОЙЗБОПН. фБЛЙН ПВТБЪПН, ЪБДБЮБ, РПУФБЧМЕООБС фПНУПОПН Й тЙФЮЙ, ФП ЕУФШ РПУФТПЕОЙЕ ХДПВОПЗП РТПЗТБННОПЗП ПЛТХЦЕОЙС, ВЩМБ ЧЩРПМОЕОБ.

уФПЙФ ПФНЕФЙФШ, ЮФП ТЕБМЙЪБГЙС пу UNIX РТПИПДЙМБ Ч БФНПУЖЕТЕ, УХЭЕУФЧЕООП ПФМЙЮБАЭЕКУС ПФ ФПК, Ч ЛПФПТПК ТБЪТБВБФЩЧБЕФУС ВПМШЫЙОУФЧП ПРЕТБГЙПООЩИ УЙУФЕН, ЙНЕАЭЙИ ЛПННЕТЮЕУЛЙИ ХУРЕИ, ЛПЗДБ ДАЦЙОЩ ФБМБОФМЙЧЩИ РТПЗТБННЙУФПЧ ОБРТСЦЕООП ТБВПФБАФ Ч ПВУФБОПЧЛЕ БВУПМАФОПК УЕЛТЕФОПУФЙ, РТЙЮЕН УТПЛЙ ЪБЧЕТЫЕОЙС ТБВПФ ВЩЧБАФ ПЮЕОШ ЦЕУФЛЙНЙ. ч РТПФЙЧПРПМПЦОПУФШ ФБЛПНХ РПДИПДХ, пу UNIX УПЪТЕЧБМБ РТЙНЕТОП Ч ФЕЮЕОЙЕ ДЕУСФЙ МЕФ. у УБНПЗП ОБЮБМБ ПОБ РТЙЧМЕЛМБ ЧОЙНБОЙЕ ВПМШЫПЗП ЮЙУМБ ЪБНЕЮБФЕМШОЩИ УРЕГЙБМЙУФПЧ, НОПЗЙЕ ЙЪ ЛПФПТЩИ ЙУРПМШЪПЧБМЙ УЙУФЕНХ ДМС РТПЧЕДЕОЙС УПВУФЧЕООЩИ ТБЪТБВПФПЛ, У ПДОПК УФПТПОЩ, Й ЧОЕУМЙ УЧПК ЧЛМБД Ч ЕЕ ТБЪЧЙФЙЕ, У ДТХЗПК УФПТПОЩ.

оБЮЙОБС У 1971 ЗПДБ УЙУФЕНБ УФБМБ ЙУРПМШЪПЧБФШУС ЧОХФТЙ AT&T Bell Laboratories, Б ЧУЛПТЕ (Ч 1974 ЗПДХ) УФБМБ РТПДБЧБФШУС ЛПММЕДЦБН Й ХОЙЧЕТУЙФЕФБН, РТЙЮЕН ГЕОБ ВЩМБ ОЕЧЩУПЛПК Й ОЙЛБЛПК РПДДЕТЦЛЙ ОЕ РТЕДРПМБЗБМПУШ. ьФЙ, ФБЛ ОБЪЩЧБЕНЩЕ ЙУУМЕДПЧБФЕМШУЛЙЕ ЧЕТУЙЙ, ОХНЕТПЧБМЙУШ БТБВУЛЙНЙ ГЙЖТБНЙ, ОБЮЙОБС У 7. йОПЗДБ ПОЙ УБНПУФПСФЕМШОП ТБЪЧЙЧБМЙУШ Й ПВПЗБЭБМЙ УЙУФЕНХ ОПЧЩНЙ ЬМЕНЕОФБНЙ. оБРТЙНЕТ, ЫЙТПЛП ЙЪЧЕУФОЩК ЬЛТБООЩК ТЕДБЛФПТ vi ВЩМ ДПВБЧМЕО Л УЙУФЕНЕ хЙМШСНПН дЦПЕН ЙЪ хОЙЧЕТУЙФЕФБ вЕТЛМЙ. ч 1979 ЗПДХ, УПЗМБУОП ЛПННЕТЮЕУЛЙН ФТЕВПЧБОЙСН, AT&T ОБЮБМБ РПУФБЧМСФШ РПДДЕТЦЙЧБЕНЩЕ ЧЕТУЙЙ пу UNIX. пОЙ ОХНЕТПЧБМЙУШ ТЙНУЛЙНЙ ГЙЖТБНЙ, Й ЛТПНЕ ФПЗП, ЮБУФП УОБВЦБМЙУШ ОПНЕТПН НПДЙЖЙЛБГЙЙ. оБРТЙНЕТ, ФЕЛХЭБС ЧЕТУЙС ОБЪЩЧБЕФУС UNIX System V Release 3.1.

чЕТУЙЙ пу UNIX, РПУФБЧМСЕНЩЕ AT&T УЕКЮБУ, ТБЪТБВБФЩЧБАФУС Ч ПВУФБОПЧЛЕ, ВПМЕЕ ФЙРЙЮОПК ДМС РТПНЩЫМЕООПЗП РТПЙЪЧПДУФЧБ РТПЗТБННОПЗП ПВЕУРЕЮЕОЙС. уПЧЕТЫЕОУФЧПЧБОЙЕ УЙУФЕНЩ РТПЙУИПДЙФ Ч ПФЧЕФ ОБ ФТЕВПЧБОЙС ТЩОЛБ. фЕН ОЕ НЕОЕЕ, УЙУФЕНБ РП-РТЕЦОЕНХ ЧЩТБЦБЕФ РЕТЕДПЧХА ЙДЕПМПЗЙА ЕЕ ТБЪТБВПФЮЙЛПЧ, Й ОЕУЕФ ПФРЕЮБФПЛ ХОЙЧЕТУЙФЕФУЛПК БФНПУЖЕТЩ, Ч ЛПФПТПК ПОЙ ТБВПФБАФ. ьФП УЧПКУФЧП УЙУФЕНЩ ЮБУФП ОБЪЩЧБАФ ЕЕ ЖЙМПУПЖЙЕК, ЙНЕС Ч ЧЙДХ УРПУПВ ЙУРПМШЪПЧБОЙС UNIX’Б ПРЩФОЩНЙ РТПЗТБННЙУФБНЙ.

1.2. рТПУФБС ЖПТНХМЙТПЧЛБ ЖЙМПУПЖЙЙ УЙУФЕНЩ UNIX


йУРПМШЪХКФЕ ФТХД ДТХЗЙИ РТПЗТБННЙУФПЧ!

ч ПФМЙЮЙЕ ПФ ЛПНРШАФЕТОЩИ ПЛТХЦЕОЙК, Ч ЛПФПТЩИ ТБЪТБВПФЛБ ОПЧЩИ РТПЕЛФПЧ ПВЩЮОП ОБЮЙОБЕФУС У ОХМС, Ч пу UNIX ЪОБЮЙФЕМШОБС ЮБУФШ ТБВПФЩ ХЦЕ РТПДЕМБОБ Й ИТБОЙФУС, ПЦЙДБС ЙУРПМШЪПЧБОЙС, Ч ЛБФБМПЗБИ /bin , /usr/bin , Б ФБЛЦЕ /etc .

пУПВЕООПУФЙ пу UNIX (ЛБОБМЩ, РТПГЕУУЩ, ХУФТПКУФЧП ЖБКМПЧПК УЙУФЕНЩ) УРПУПВУФЧХАФ НОПЗПЛТБФОПНХ ЙУРПМШЪПЧБОЙА РТПЗТБНН, ЮФП РПДФЧЕТЦДБЕФУС ЙУФПТЙЕК ТБЪТБВПФЛЙ УБНПК УЙУФЕНЩ, ЧПУИПДСЭЕК Л 1969 ЗПДХ. чЩ ТЙУЛХЕФЕ ОЕ РПОСФШ УХФЙ УЙУФЕНЩ UNIX, ЕУМЙ ОЕ ВХДЕФЕ Ч УЧПЕК ТБВПФЕ ЙУРПМШЪПЧБФШ ЬФЙ ЕЕ ПУПВЕООПУФЙ.

2. йоуфтхнеофбтйк пу UNIX. зде п оен нпцоп ртпюйфбфш

фЕТНЙО ЙОУФТХНЕОФБТЙК пу UNIX ФТЕВХЕФ ОЕЛПФПТПЗП ХФПЮОЕОЙС. ч ОБЙВПМЕЕ ХЪЛПН УНЩУМЕ ПО ПЪОБЮБЕФ ЖТБЗНЕОФЩ УХЭЕУФЧХАЭЕЗП РТПЗТБНОПЗП ПВЕУРЕЮЕОЙС, ЙУРПМШЪХЕНЩЕ ЛБЛ ЛПНРПОЕОФЩ ДМС РПУФТПЕОЙС ОПЧЩИ РТПЗТБНН. ч ВПМЕЕ ЫЙТПЛПН УНЩУМЕ ЬФЙН ФЕТНЙОПН НПЦЕФ ПВПЪОБЮБФШУС УПЧПЛХРОПУФШ УБНЩИ ТБЪМЙЮОЩИ ЬМЕНЕОФПЧ пу UNIX, ФБЛЙИ ЛБЛ ХФЙМЙФЩ, РТПЗТБННЩ, ЛПНБОДЩ, СЪЩЛЙ, ЖХОЛГЙЙ Й Ф.Д. рХФБОЙГБ НПЦЕФ ЧПЪОЙЛОХФШ, Й ЮБУФП ЧПЪОЙЛБЕФ, ЙЪ-ЪБ ФПЗП, ЮФП НОПЗЙЕ ЙЪ ХРПНСОХФЩИ ЬМЕНЕОФПЧ УЙУФЕНЩ ДЕКУФЧЙФЕМШОП НПЗХФ ЙУРПМШЪПЧБФШУС ЛБЛ ЛПНРПОЕОФЩ ДМС РПУФТПЕОЙС ОПЧЩИ РТПЗТБНН.

2.1. лБЛЙЕ ЙОУФТХНЕОФЩ ПРЙУЩЧБАФУС Ч ДБООПН тХЛПЧПДУФЧЕ

ч тХЛПЧПДУФЧЕ РТПЗТБННЙУФБ ПРЙУЩЧБАФУС ЙОУФТХНЕОФЩ, ЙУРПМШЪХЕНЩЕ ДМС УПЪДБОЙС РТПЗТБНН Ч ПЛТХЦЕОЙЙ пу UNIX. ъБНЕФЙН, ЮФП Ч ТХЛПЧПДУФЧЕ ПРЙУЩЧБАФУС ОЕ ЧУЕ ЙНЕАЭЙЕУС ЙОУФТХНЕОФЩ. чПЪНПЦОП, ЮФП ОЕПРЙУБООЩЕ ЙОУФТХНЕОФЩ ПЛБЦХФУС ДБЦЕ ВПМЕЕ ЧБЦОЩНЙ ДМС чБУ, ФЕН ОЕ НЕОЕЕ Х ОБУ ОЕФ ЧПЪНПЦОПУФЙ ОБРЙУБФШ ПВП ЧУЕН. лТБФЛП РЕТЕЮЙУМЙН, ЮФП ЙНЕООП ВХДЕФ ПРЙУБОП, Б ЮФП — ОЕФ.

оЕ ПРЙУБООЩЕ Ч ДБООПН ТХЛПЧПДУФЧЕ ЙОУФТХНЕОФЩ:

  • рТПГЕДХТБ ЧИПДБ Ч УЙУФЕНХ.
  • тЕДБЛФПТЩ пу UNIX.
  • пТЗБОЙЪБГЙС ЖБКМПЧПК УЙУФЕНЩ.
  • рТПЗТБННЙТПЧБОЙЕ ОБ shell’Е.

йОЖПТНБГЙА ПВ ЬФПН НПЦОП ОБКФЙ Ч тХЛПЧПДУФЧЕ РПМШЪПЧБФЕМС, Б ФБЛЦЕ Ч ДТХЗЙИ ДПУФХРОЩИ ЛОЙЗБИ.

пРЙУЩЧБЕНЩЕ Ч ТХЛПЧПДУФЧЕ ЙОУФТХНЕОФЩ НПЦОП ЛМБУУЙЖЙГЙТПЧБФШ УМЕДХАЭЙН ПВТБЪПН:

  • хФЙМЙФЩ ДМС РПМХЮЕОЙС ЧЩРПМОСЕНЩИ РТПЗТБНН.
  • хФЙМЙФЩ ДМС ПТЗБОЙЪБГЙЙ ТБЪТБВПФЛЙ РТПЗТБННОПЗП РТПЕЛФБ.
  • уРЕГЙБМЙЪЙТПЧБООЩЕ СЪЩЛЙ.
  • йОУФТХНЕОФЩ ДМС ПФМБДЛЙ Й БОБМЙЪБ РТПЗТБНН.
  • лПНРПОЕОФЩ СЪЩЛПЧ ЧЩУПЛПЗП ХТПЧОС, ОЕ СЧМСАЭЙЕУС ЮБУФША ЙИ УЙОФБЛУЙУБ, ОБРТЙНЕТ, УФБОДБТФОЩЕ ВЙВМЙПФЕЛЙ, УЙУФЕНОЩЕ ЧЩЪПЧЩ Й ЖХОЛГЙЙ.

2.2. Shell ЛБЛ УТЕДУФЧП ЙЪЗПФПЧМЕОЙС РТПФПФЙРПЧ

чУСЛЙК ТБЪ, ЛПЗДБ чЩ ЧИПДЙФЕ Ч пу UNIX, чЩ ЙУРПМШЪХЕФЕ shell. Shell — ЬФП ЙОФЕТБЛФЙЧОЩК ЙОФЕТРТЕФБФПТ ЛПНБОД, РПЪЧПМСАЭЙК ЧЪБЙНПДЕКУФЧПЧБФШ У СДТПН пу UNIX. оП ЬФП МЙЫШ ПДОП ЙЪ РТЙНЕОЕОЙК shell’Б. Shell НПЦЕФ ВЩФШ ЙУРПМШЪПЧБО ЛБЛ СЪЩЛ РТПЗТБННЙТПЧБОЙС. рТПЗТБННЩ ОБ ЬФПН СЪЩЛЕ Ч ДБМШОЕКЫЕН ВХДХФ ОБЪЩЧБФШУС shell-РТПГЕДХТБНЙ. Shell-РТПГЕДХТЩ НПЗХФ ЙНЕФШ ТБЪЧЕФЧМЕООХА УФТХЛФХТХ, ЙЪ ОЙИ НПЦОП ЪБРХУЛБФШ РТПГЕУУЩ. ч СЪЩЛЕ ЙНЕАФУС УТЕДУФЧБ ДМС ПВТБВПФЛЙ ЙУЛМАЮЙФЕМШОЩИ УЙФХБГЙК, Б ФБЛЦЕ ДМС РЕТЕОБЪОБЮЕОЙС ЧЧПДБ Й ЧЩЧПДБ. фБЛЙН ПВТБЪПН, shell СЧМСЕФУС РПМОПГЕООЩН СЪЩЛПН РТПЗТБННЙТПЧБОЙС.

пДОЙН ЙЪ ДПУФПЙОУФЧ shell’Б СЧМСЕФУС ЧПЪНПЦОПУФШ ПТЗБОЙЪБГЙЙ ФБЛ ОБЪЩЧБЕНЩИ ЛПОЧЕКЕТПЧ — ГЕРПЮЕЛ ЛПНБОД, ЛПФПТЩЕ ВХДХФ ЧЩРПМОСФШУС ПДОБ ЪБ ДТХЗПК ФБЛЙН ПВТБЪПН, ЮФП ЧЩЧПД РТЕДЩДХЭЕК ЛПНБОДЩ СЧМСЕФУС ЧЧПДПН УМЕДХАЭЕК. ч ЛПОЧЕКЕТБИ НПЦЕФ ЙУРПМШЪПЧБФШУС ВПМШЫЙОУФЧП ЛПНБОД, ПРЙУБООЩИ Ч уРТБЧПЮОЙЛЕ РПМШЪПЧБФЕМС, РПЬФПНХ ЧТЕНС, ЪБФТБЮЕООПЕ чБНЙ ОБ ЙЪХЮЕОЙЕ уРТБЧПЮОЙЛБ РПМШЪПЧБФЕМС, ВЕЪХУМПЧОП ПЛХРЙФУС. рТПУНПФТЙФЕ ЬФПФ уРТБЧПЮОЙЛ, Й, ЧПЪНПЦОП, чЩ ОБКДЕФЕ ЛПНБОДХ, ЛПФПТБС, ВХДХЮЙ ХРПФТЕВМЕООПК У ОХЦОЩНЙ ПРГЙСНЙ, ТЕЫЙФ ФТХДОХА РТПЗТБННЙУФУЛХА РТПВМЕНХ. юЕН ВПМШЫЕ ЛПНБОД УФБОЕФ чБН ЙЪЧЕУФОП, ФЕН Ч ВПМШЫЕК УФЕРЕОЙ чЩ УНПЦЕФЕ ЧПУРПМШЪПЧБФШУС ЧПЪНПЦОПУФСНЙ пу UNIX.

ч ДБООЩК НПНЕОФ НЩ ОЕ ВХДЕН ЪБОЙНБФШУС ПВХЮЕОЙЕН РТПЗТБННЙТПЧБОЙА ОБ shell’Е. рПДЮЕТЛОЕН МЙЫШ ФХ ЧБЦОХА ТПМШ, ЛПФПТХА НПЦЕФ ЙЗТБФШ shell РТЙ ТБЪТБВПФЛЕ НБЛЕФОЩИ ПВТБЪГПЧ ЛТХРОПНБУЫФБВОПЗП РТПЗТБННОПЗП ПВЕУРЕЮЕОЙС. дЕКУФЧЙФЕМШОП, ОЕУНПФТС ОБ ФП, ЮФП ЙЪХЮЕОЙЕ shell’Б УП ЧУЕНЙ ЕЗП ОАБОУБНЙ СЧМСЕФУС ДПУФБФПЮОП УМПЦОПК ЪБДБЮЕК, ОБ РПМХЮЕОЙЕ shell-РТПЗТБНН ФТЕВХЕФУС ЗПТБЪДП НЕОШЫЕ ЧТЕНЕОЙ, ЮЕН ОБ ТБЪТБВПФЛХ РТПЗТБНН ОБ ПВЩЮОЩИ СЪЩЛБИ ЧЩУПЛПЗП ХТПЧОС.

вМБЗПДБТС ЧПЪНПЦОПУФЙ ВЩУФТПЗП РПМХЮЕОЙС ТБВПФБАЭЙИ РТПЗТБНН, shell СЧМСЕФУС НПЭОЩН ЙОУФТХНЕОФПН РТЙ ТБЪТБВПФЛЕ РТПЗТБННОПЗП ПВЕУРЕЮЕОЙС. рТЙНЕОЕОЙЕ shell’Б РПЪЧПМСЕФ ЙУРПМШЪПЧБФШ ФТХД ДТХЗЙИ Ч НБЛУЙНБМШОПК УФЕРЕОЙ, ФБЛ ЛБЛ РТЙ РТПЗТБННЙТПЧБОЙЙ ОБ shell’Е НПЦОП МЕЗЛП Й ЬЖЖЕЛФЙЧОП ЛПНВЙОЙТПЧБФШ ТБЪМЙЮОЩЕ ЛПНРПОЕОФЩ. оБ shell’Е ЮБУФП ХДБЕФУС ЪБРТПЗТБННЙТПЧБФШ ДБЦЕ ВПМШЫЙЕ РТЙЛМБДОЩЕ РТПЗТБННОЩЕ УЙУФЕНЩ. дБЦЕ ЕУМЙ ФБЛПЕ РТПЗТБННЙТПЧБОЙЕ ЧЩРПМОСЕФУС У ГЕМША РПМХЮЕОЙС НБЛЕФОПЗП ПВТБЪГБ РТПЗТБННОПК УЙУФЕНЩ, РТЕДОБЪОБЮЕООПЗП МЙЫШ ДМС РТПЧЕТЛЙ ЕЕ ГЕМЕК, НПЗХФ ВЩФШ УЬЛПОПНМЕОЩ НОПЗЙЕ НЕУСГЩ ТБВПФЩ. дЕКУФЧЙФЕМШОП, ЙНЕС ФБЛПК НБЛЕФОЩК ПВТБЪЕГ, НПЦОП ПРТЕДЕМЙФШ ДЙБРБЪПО ЧПЪНПЦОЩИ РПМШЪПЧБФЕМШУЛЙИ ПЫЙВПЛ, ЮФП ОЕ ЧУЕЗДБ МЕЗЛП РТПДЕМБФШ ОБ УФБДЙЙ РТПЕЛФЙТПЧБОЙС РТПЗТБННОПК УЙУФЕНЩ. лТПНЕ ФПЗП, НБЛЕФ РПЪЧПМСЕФ ПФТБВПФБФШ ТЕБЛГЙА УЙУФЕНЩ РТЙ ОЕЛПТТЕЛФОПН ЧЧПДЕ РПМШЪПЧБФЕМС. фБЛЙН ПВТБЪПН, НПЦОП ЙЪВЕЦБФШ ВПМШЫПЗП ПВЯЕНБ ТБВПФ РП ЙУРТБЧМЕОЙА ПЫЙВПЛ, ЧПЪОЙЛЫЙИ ОБ УФБДЙЙ РТПЕЛФЙТПЧБОЙС ТБЪТБВБФЩЧБЕНПК РТПЗТБННОПК УЙУФЕНЩ.

ч ЪБЛМАЮЕОЙЙ ЪБНЕФЙН, ЮФП ЙЪ shell-РТПГЕДХТ НПЦОП ПВТБЭБФШУС ЛБЛ Л РТПЗТБННБН, ОБРЙУБООЩН ОБ ПВЩЮОЩИ СЪЩЛБИ РТПЗТБННЙТПЧБОЙС, ФБЛ Й Л УФБОДБТФОЩН ЛПНБОДБН пу UNIX. ьФП ХДПВОП, ФБЛ ЛБЛ ЮБУФП У РПНПЭША ЙНЕАЭЙИУС ЙОУФТХНЕОФПЧ НПЦОП ЧЩРПМОЙФШ ЛБЛЙЕ-МЙВП ДЕКУФЧЙС, ЪБРЙУБЧ ЧУЕЗП РБТХ УФТПЛ ЧНЕУФП РПМХФПТБУФТБОЙЮОПК РТПЗТБННЩ ОБ ЛБЛПН-МЙВП СЪЩЛЕ.

3. фтй чйдб ртпзтбннйуфпч

лБЛ ХЦЕ ЗПЧПТЙМПУШ, НЩ ВХДЕН ТБЪМЙЮБФШ ФТЙ ЛБФЕЗПТЙЙ UNIX-РТПЗТБННЙУФПЧ, ЙУРПМШЪХС Ч ЛБЮЕУФЧЕ ЛТЙФЕТЙС ЧЙД ТБЪТБВБФЩЧБЕНЩИ ЙНЙ РТПЗТБНН. ъБНЕФЙН, ЮФП ЬФБ ЛМБУУЙЖЙЛБГЙС ОЕ ПУОПЧБОБ ОБ ЛЧБМЙЖЙЛБГЙЙ ЙМЙ ПРЩФЕ РТПЗТБННЙУФПЧ. дЕКУФЧЙФЕМШОП, ЧЩУПЛПЛЧБМЙЖЙГЙТПЧБООЩЕ РТПЗТБННЙУФЩ, ЙНЕАЭЙЕ НОПЗПМЕФОЙК ПРЩФ, НПЗХФ ВЩФШ ЙОПЗДБ ПФОЕУЕОЩ Л ЛБФЕЗПТЙЙ РТПЗТБННЙУФПЧ-ПДЙОПЮЕЛ. у ДТХЗПК УФПТПОЩ, РТПЗТБННЙУФЩ У ПФОПУЙФЕМШОП ОЕВПМШЫЙН ПРЩФПН ТБВПФЩ НПЗХФ ХЮБУФЧПЧБФШ Ч ЛПММЕЛФЙЧБИ, УПЪДБАЭЙИ РТЙЛМБДОПЕ ЙМЙ УЙУФЕНОПЕ РТПЗТБННОПЕ ПВЕУРЕЮЕОЙЕ.

3.1. рТПЗТБННЙУФЩ-ПДЙОПЮЛЙ

рТПЗТБННЙУФЩ ЬФПК ЛБФЕЗПТЙЙ РЙЫХФ РТПЗТБННЩ ФПМШЛП ДМС ФПЗП, ЮФПВЩ ПВМЕЗЮЙФШ ЧЩРПМОЕОЙЕ УЧПЕК ПУОПЧОПК ТБВПФЩ. рПМХЮЕООЩЕ ЙНЙ ТЕЪХМШФБФЩ НПЗХФ ВЩФШ РПНЕЭЕОЩ Ч ЖПОД РТПЗТБНН, ДПУФХРОЩИ ЛПММЕЛФЙЧХ, Ч ЛПФПТПН ДБООЩК РТПЗТБННЙУФ ТБВПФБЕФ. ьФП РПИПЦЕ ОБ ФП, ЛБЛ ТБЪЧЙЧБМБУШ УБНБ пу UNIX: ЛФП-ФП ЙЪЗПФБЧМЙЧБЕФ РПМЕЪОЩК ЙОУФТХНЕОФ Й ЪБФЕН ЙУРПМШЪХЕФ ЕЗП УПЧНЕУФОП У ПУФБМШОЩНЙ ЮМЕОБНЙ ПТЗБОЙЪБГЙЙ. рТПЗТБННЙУФЩ ДБООПК ЛБФЕЗПТЙЙ НПЗХФ ОЕ ЙНЕФШ ЧОЕЫОЙИ ФТЕВПЧБОЙК Л РТПЗТБННБН, ТБВПФБФШ ВЕЪ УПБЧФПТПЧ Й ВЕЪ ЛБЛПЗП-МЙВП ХРТБЧМЕОЙС ЙИ ДЕСФЕМШОПУФША. оБ РТПГЕУУ УПЪДБОЙС РТПЗТБННЩ ЧМЙСЕФ ФПМШЛП УБНБ ЪБДБЮБ, ТЕЫБЕНБС РТПЗТБННЙУФПН. пДОЙН ЙЪ ЖБЛФПТПЧ, УРПУПВУФЧХАЭЙИ ОБМЙЮЙА РТПЗТБННЙУФПЧ ДБООПК ЛБФЕЗПТЙЙ, СЧМСЕФУС ФП, ЮФП пу UNIX СЧМСЕФУС УЙУФЕНПК У ТБЪДЕМЕОЙЕН ЧТЕНЕОЙ. дЕКУФЧЙФЕМШОП, УПФТХДОЙЛЙ, ХНЕАЭЙЕ РТПЗТБННЙТПЧБФШ, НПЗХФ ТЕЫБФШ УЧПЙ РТПВМЕНЩ, НЙОХС РТПГЕДХТХ ПЖЙГЙ- БМШОПЗП ПДПВТЕОЙС ЙИ РТПЕЛФПЧ Й ОЕ ПЦЙДБОЙС Ч ФЕЮЕОЙЕ НЕУСГЕЧ, ЛПЗДБ ЫФБФОЩЕ РТПЗТБННЙУФЩ ОБРЙЫХФ РТПЗТБННЩ.

рТПЗТБННЙУФБН ДБООПК ЛБФЕЗПТЙЙ ОЕПВИПДЙНП ЪОБФШ, ЛБЛ:

  • чЩВЙТБФШ РПДИПДСЭЙК СЪЩЛ РТПЗТБННЙТПЧБОЙС.
  • лПНРЙМЙТПЧБФШ Й ЧЩРПМОСФШ РТПЗТБННЩ.
  • йУРПМШЪПЧБФШ УЙУФЕНОЩЕ ВЙВМЙПФЕЛЙ.
  • бОБМЙЪЙТПЧБФШ РТПЗТБННЩ.
  • пФМБЦЙЧБФШ РТПЗТБННЩ.
  • пФУМЕЦЙЧБФШ ЧЕТУЙЙ РТПЗТБНН.

вПМШЫБС ЮБУФШ ЙОЖПТНБГЙЙ, ОЕПВИПДЙНПК ДМС ЧЩРПМОЕОЙС ЬФЙИ ДЕКУФЧЙК, УПДЕТЦЙФУС Ч УМЕДХАЭЕК ЗМБЧЕ.

3.2. рТЙЛМБДОЩЕ РТПЗТБННЙУФЩ

рТПЗТБННЙУФЩ ДБООПК ЗТХРРЩ ТБЪТБВБФЩЧБАФ РТПЗТБННОЩЕ УЙУФЕНЩ, ЛПФПТЩНЙ ВХДХФ РПМШЪПЧБФШУС ОЕРТПЗТБННЙУФЩ. тБЪТБВПФЛБ ЛТХРОПК РТЙЛМБДОПК УЙУФЕНЩ ФТЕВХЕФ ХЮБУФЙС ГЕМЩИ ЛПММЕЛФЙЧПЧ РТПЗТБННЙУФПЧ. юМЕОБНЙ ФБЛЙИ ЛПММЕЛФЙЧПЧ НПЗХФ ВЩФШ УПФТХДОЙЛЙ ЛБЛ ЖЙТНЩ-ЪБЛБЪЮЙЛБ, ФБЛ Й ЖЙТНЩ-ТБЪТБВПФЮЙЛБ. ъБНЕФЙН, ЮФП ОЕЛПФПТЩЕ РТПЗТБННЙУФЩ, ЪБОСФЩЕ ТБЪТБВПФЛПК РТЙЛМБДОПЗП РТПЗТБННОПЗП ПВЕУРЕЮЕОЙС, Ч ВПМШЫЕК УФЕРЕОЙ ЪБОЙНБАФУС ПТЗБОЙЪБГЙЕК РТПГЕУУБ ТБЪТБВПФЛЙ РТПЗТБНН, Б ОЕ УПВУФЧЕООП РТПЗТБННЙТПЧБОЙЕН.

йОЖПТНБГЙС, ОЕПВИПДЙНБС РТПЗТБННЙУФБН ДБООПК ЛБФЕЗПТЙЙ, ЧЛМАЮБЕФ ЧУЕ ФЕНЩ УМЕДХАЭЕК ЗМБЧЩ, Б ФБЛЦЕ:

уЙУФЕНЩ ХРТБЧМЕОЙС РТПЗТБННОЩН ПВЕУРЕЮЕОЙЕН.

  • вМПЛЙТПЧЛХ ЖБКМПЧ Й УЕЗНЕОФПЧ.
  • нЕЦРТПГЕУУОПЕ ЧЪБЙНПДЕКУФЧЙЕ.
  • тБЪДЕМСЕНХА РБНСФШ.
  • хУПЧЕТЫЕОУФЧПЧБООЩЕ НЕФПДЩ ПФМБДЛЙ РТПЗТБНН.

ч ЬФПК УЧСЪЙ ОБУФПСФЕМШОП ТЕЛПНЕОДХЕН ЙЪХЮЙФШ ФПН, РПУЧСЭЕООЩК йОФЕЗТЙТПЧБООПК уТЕДЕ тБЪТБВПФЛЙ рТПЗТБНН (йутр).

3.3. уЙУФЕНОЩЕ РТПЗТБННЙУФЩ

ьФП РТПЗТБННЙУФЩ, ЪБОСФЩЕ Ч ТБЪТБВПФЛЕ РТПЗТБННОЩИ УТЕДУФЧ, СЧМСАЭЙИУС ЮБУФША ПРЕТБГЙПООПК УЙУФЕНЩ, ЙМЙ ФЕУОП У ОЕК УЧСЪБООЩИ. фБЛБС ДЕСФЕМШОПУФШ НПЦЕФ ЧЛМАЮБФШ УПЪДБОЙЕ ДТБКЧЕТПЧ ОПЧЩИ ЖЙЪЙЮЕУЛЙИ ХУФТПКУФЧ, ТБЪТБВПФЛХ УЙУФЕН ХРТБЧМЕОЙС ВБЪБНЙ ДБООЩИ ЙМЙ УПЧЕТЫЕОУФЧПЧБОЙЕ СДТБ УЙУФЕНЩ. рТПЗТБННЙУФБН ЬФПК ЛБФЕЗПТЙЙ, ЛТПНЕ ЪОБОЙС ЙУИПДОЩИ ФЕЛУФПЧ ПРЕТБГЙПООПК УЙУФЕНЩ, ОЕПВИПДЙНП ФЭБФЕМШОП ЙЪХЮЙФШ ЧУА ДПУФХРОХА ДПЛХНЕОФБГЙА РП пу UNIX.

Искусство программирования для Unix

Вдохновившим меня Кену Томпсону и Деннису Ритчи 1

Часть I Контекст 3

Часть II Проектирование 27

Часть III Реализация 97

Часть IV Сообщество 118

А Глоссарий аббревиатур 143

Б Список литературы 144

В Персональный вклад 146

Г Корни без корней: Unix-коаны Мастера Фу 146

Дополнительная информация 148

Искусство программирования для Unix

ISBN 5-8459-0791-8 (рус.)

Книги, подобные этой, редко появляются на прилавках магазинов, поскольку за ними стоит многолетний опыт работы их авторов. Здесь описывается хороший стиль Unix-программирования, многообразие доступных языков программирования, их преимущества и недостатки, различные IPC-методики и инструменты разработки. Автор анализирует философию Unix, культуру и основные традиции сформированного вокруг нее сообщества. В книге объясняются наилучшие практические приемы проектирования и разработки программ в Unix. Вместе с тем описанные в книге модели и принципы будут во многом полезны и Windows-разработчикам. Особо рассматриваются стили пользовательских интерфейсов Unix-программ и инструменты для их разработки. Отдельная глава посвящена описанию принципов и инструментов для создания хорошей документации.

Книга будет полезной для широкой категории пользователей ПК и программистов.

Вдохновившим меня Кену Томпсону и Деннису Ритчи

Предисловие

Unix — не столько операционная система, сколько история.

-Нил Стефенсон (Neal Stephenson)

Существует огромная разница между знаниями и опытом. Знания позволяют определить необходимые действия аналитическим путем, тогда как опыт делает верные действия рефлекторными, едва ли требующими осознанных размышлений вообще.

Целью книги является попытка преподнести читателям аспекты разработки программ в Unix, которые интуитивно известны экспертам данной операционной системы. Поэтому в данной книге, в отличие от большинства других книг о Unix, рассматривается меньше технических подробностей и больше вопросов коллективной культуры, как в явной, так и в скрытой ее формах, а также ее осознанные и неосознанные традиции. Данная книга не дает ответов на вопросы о том, «как сделать что-либо», она не является сборником документов how-to, скорее в ней собраны ответы на вопросы наподобие «почему это следует сделать» (why-to).

Подход why-to обладает большой практической важностью, поскольку слишком многие программы проектируются неудачно. Для большинства из них характерен большой размер, чрезвычайная сложность сопровождения и чрезмерные трудности при переносе на новые платформы или расширении, которое не было предусмотрено создавшими их программистами. Данные проблемы являются симптомами ошибочного проектирования. Авторы надеются, что эта книга позволит популяризировать некоторые относящиеся к Unix знания в области хорошего проектирования.

Книга разделена на четыре части: «Контекст», «Проектирование», «Реализация» и «Сообщество». В первой части («Контекст») освещены философские и исторические аспекты, способствующие созданию основы и заинтересованности для восприятия последующего материала. Во второй части («Проектирование») принципы философии Unix разворачиваются в более специфические рекомендации, касающиеся проектирования и реализации. В третьей части («Реализация») основное внимание уделено программному обеспечению Unix. Четвертая часть («Сообщество») касается межличностного взаимодействия и соглашений, которые делают Unix-культуру столь эффективной в своей области.

Поскольку данная книга посвящена коллективной культуре, автор с самого начала не планировал создавать ее в одиночестве. Читатели заметят, что текст включает в себя высказывания выдающихся Unix-разработчиков, основателей традиций Unix. Эти светила были приглашены прокомментировать и обсудить текст в ходе длительного процесса публичного рассмотрения книги.

Используя слово «мы», автор не пытается показаться всеведущим, а старается отразить тот факт, что в книге предпринята попытка ясного выражения опыта всего сообщества.

Поскольку данная книга нацелена на передачу культуры, она включает в себя гораздо больше исторических фактов, фольклора и замечаний, чем обычная техническая книга. Наслаждайтесь: все это также является частью обучения Unix-програм-миста. Ни одна из исторических подробностей не является жизненно важной, но в совокупности все они существенны. Авторы полагают, что это делает книгу более интересной. Гораздо важнее понимание того, откуда произошла операционная система Unix и как она встала на путь своего развития. Это поможет развить интуитивное чувство Unix-стиля.

По той же причине авторы отказались от написания книги таким образом, как если бы история была завершенной. Читатели найдут большое количество ссылок относительно времени написания книги. Эти ссылки призваны обратить внимание читателя на то, что соответствующие факты могли устареть и должны быть перепроверены.

Кроме того, настоящая книга не является ни сборником уроков по языку С, ни руководством по командам и API-функциям операционной системы Unix. Она также не является справочником по программам sed или уасс, языкам Perl или Python, букварем для сетевого программиста или исчерпывающим описанием секретов системы X. Это не экскурс во внутреннее устройство или структуру операционной системы Unix. Указанные вопросы лучше рассмотрены в других книгах, и в тексте данной книги в соответствующих случаях имеются ссылки на них.

За пределами всех специфических технических вопросов Unix-культура обладает неписаной традицией, которая развивалась на протяжении миллионов человеко-лет инженерной практики. Данная книга написана с верой в то, что понимание этой традиции и включение в свой инструментарий ее моделей поможет читателям стать лучшими программистами и проектировщиками.

Культура создается людьми, и традиционный путь изучения Unix-культуры состоит в постепенном ее восприятии через фольклор от членов сообщества. Эта книга не заменит передачи культуры в личном общении, но она способна ускорить этот процесс, позволяя изучить опыт других.

Для кого предназначена эта книга

Книга рекомендуется для опытных Unix-программистов, которые обучают начинающих разработчиков либо спорят с приверженцами других операционных систем и находят трудным ясное изложение преимуществ Unix-подхода.

Книгу стоит прочесть программистам на С, С++ или Java, имеющим опыт работы в других операционных системах и планирующим начать Unix-проект.

Книгу также следует прочесть пользователям Unix, как новичкам, так и пользователям со средним уровнем квалификации, но имеющим небольшой опыт разработки и желающим изучить методики проектирования эффективного программного обеспечения в этой операционной системе.

Материал книги также рекомендуется изучить тем, кто, не являясь Unix-npor-раммистом, осознает ценность Unix-традиций. Авторы верят в правоту этой точки зрения; Unix-философию можно использовать в других операционных системах. Поэтому в данной книге этим другим системам (в особенности системам, разработанным корпорацией Microsoft) уделено больше внимания, чем обычно в книгах по Unix. Если инструментарий и учебные примеры применимы к таким системам, в тексте имеются соответствующие замечания.

Данная книга рекомендуется для изучения разработчикам прикладных программ, рассматривающим платформы или методы реализации для крупного общецелевого или вертикального приложения. Таким специалистам книга поможет понять преимущества Unix в качестве платформы для разработки, а также Unix-традиций применительно к открытым исходным кодам как методу разработки.

В то же время читателям не стоит искать здесь подробности программирования на языке С или использования API-интерфейса ядра Unix. По этим темам имеется множество хороших книг, в частности: «Advanced Programming in the Unix Environment» [81] — классический труд по изучению Unix API, а также книга «The Practice of Programming» [40J, которая входит в перечень рекомендованной литературы для всех программистов на языке С (а в действительности рекомендуется всем программистам на всех языках).

Unix для программистов и пользователей — Грэм Гласс — Кинг Эйблс

Название: Unix для программистов и пользователей.

Автор: Грэм Гласс — Кинг Эйблс.

Приводятся общие сведения о развитии UNIX Рассматриваются утилиты, команды, системные вызовы и библиотечные функции для различных категорий пользователей. Описываются командные интерпретаторы Bourne shell, Korn shell, C shell и Bourne Again shell. Обсуждаются проблемы организации сети и использования Интернета. Подробно рассматриваются организация файловой системы, управление вызовами, ввод/вывод и взаимодействие процессов. Обсуждаются вопросы системного администрирования. Особое внимание уделено средствам программирования на языке С и системному программированию.

Краткое содержание:
Глава 1. Что такое Unix?
Глава 2. Утилиты Unix для непрограммистов
Глава 3. Утилиты Unix для опытных пользователей
Глава 4. Командные интерпретаторы shell
Глава 5. Bourne shell
Глава 6. Korn shell
Глава 7. С shell
Глава 8. Bourne Again shell
Глава 9. Организация сети
Глава 10. Интернет
Глава 11. Пользовательские интерфейсы
Глава 12. Инструментальные средства программирования на С
Глава 13. Системное программирование
Глава 14. Unix изнутри
Глава 15. Системное администрирование
Глава 16. Будущее

Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Unix для программистов и пользователей — Грэм Гласс — Кинг Эйблс — fileskachat.com, быстрое и бесплатное скачивание.

Скачать djvu
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России. Купить эту книгу

Unix — всё по этой теме для программистов

Я ещё не гуру программирования, учусь в институте, но одно знаю точно, что жизнь свою хочу связать с программированием и UNIX-системами. Поэтому очень хочется определиться поконкретнее, чем я хочу заниматься и чем мне стоит (в плане хорошей перспективы и зарплаты) заниматься. Поэтому решил спросить совета здесь — у людей, которые уже занимаются тем о чём я ещё только мечтаю. Вы знаете много подводных камней. Поделитесь опытом.
С программированием и UNIX связан уже достаточно давно, то есть, кое что знаю и умею. Несколько раз устраивался работать. Пробовал себя, как Java программиста (EJB) — понял, что не очень люблю этот язык — слишком уж он скучный во всех смыслах. web-программирование тоже не особо привлекло. Зато понял, что очень нравится программировать на perl и подобных ему языках. Но пока, всё что нашёл связано именно с web. Возник вопрос, востребованны ли гуру perl, но не web-программеры? Стоит ли в этом направлении углубляться? Если да, то какие направления стоит изучить прежде чем пытаться начать работать? Поглядываю также в сторону изучения Python, он похоже лучше удовлетворяет тому, чем я хотел бы заниматься.
Сформулировав кратко всё что я тут понаписал, можно задать такой вопрос:
Востребованны ли Perl, Python и подобные программисты и что в этой области стоит изучить особенно тщательно?

Уточню ещё раз: мне не требуется найти работу прямо сейчас, мне нужно определиться в каком направлении стоит развиваться, чтобы через пару-тройку лет я мог стать настоящим гуру при чём таким, который сможет найти себе достойную работу.

Мастер Йода рекомендует:  JWT простым языком что такое JSON токены и зачем они нужны

Спасибо всем, кто ответит. Мне важен любой опыт и мнение.

Рекомендовать в FAQ | Cообщить модератору | Наверх

Оглавление

  • Карьера UNIX-программиста, BarS, 06:31 , 04-Янв-05, (1)
    • Карьера UNIX-программиста, luch, 08:33 , 04-Янв-05, (2)
  • Kar’era UNIX-programmista, dilmah, 11:25 , 04-Янв-05, (3)
  • Карьера UNIX-программиста, blackpepper, 15:01 , 05-Янв-05, (4)
    • Карьера UNIX-программиста, FastSoft, 17:14 , 12-Янв-05, (5)
      • php моднее, ZOD, 11:05 , 13-Янв-05, (6)
        • php моднее, boykov, 14:42 , 13-Янв-05, (9)
          • И под UNIX и под Windows, ZOD, 15:54 , 18-Янв-05, (12)
      • Ты бы лучше на ARM MIPS и SPARC , ZOD, 16:30 , 18-Янв-05, ( 13 )
  • Карьера UNIX-программиста, favourite, 13:43 , 13-Янв-05, (7)
  • Карьера UNIX-программиста, butcher, 13:55 , 13-Янв-05, (8)
    • Карьера UNIX-программиста, Kolobok, 10:20 , 14-Янв-05, (10)
      • Карьера UNIX-программиста, jamper, 14:11 , 14-Янв-05, (11)
        • Карьера UNIX-программиста, Дима, 01:10 , 19-Янв-05, ( 14 )
          • Карьера UNIX-админа, ZOD, 11:06 , 19-Янв-05, ( 15 )
            • Расценки Московские, ZOD, 11:10 , 19-Янв-05, ( 16 )

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

Все это красиво, но редко встречается. Говорю про себя: сижу прогом 1С, админством (*NIX, WINDOWS) увлекаюсь (сначала пришлось, потому как админа не было, потом затянуло), на сегодняшний день наиболее востребованы проги 1С (и наиболее высокооплачиваемы), потом админы систем, админы SQL, а то что ты хочешь тоже есть, но надо искать, уровнь ЗП их не знаю. Может быть сейчас и пойдет развитие, но не так широко как хотелось бы тебе. В общем даже и не знаю что сказать.

1. «Карьера UNIX-программиста»
Сообщение от BarS (??) on 04-Янв-05, 06:31 (MSK)
Рекомендовать в FAQ | Cообщить модератору | Наверх

2. «Карьера UNIX-программиста»
Сообщение от luch on 04-Янв-05, 08:33 (MSK)

моему руководству вообще до балды на чём у меня сервера стоят. еще менее их интересует как я держу вэб, почту, фтп и прочее. важен конечный результат. для многих будет открытием если я заявлю что у меня все вращается на линуксах и пишу системные скрипты на перл.

Рекомендовать в FAQ | Cообщить модератору | Наверх

3. «Kar’era UNIX-programmista»
Сообщение от dilmah (ok) on 04-Янв-05, 11:25 (MSK)

>chto zhizn’ svoyu hochu svyazat’ s programmirovaniem i UNIX-sistemami.

>Voznik vopros, vostrebovanny li guru perl, no ne web-programmery?

sorry za translit..
Wse indiwidualno, zanimaysya tem chto tebe w kayf.

Primer nishi dlya UNIX programmista:
Ya znayu chto u sotowyh kompaniy ikh infrastruktura,
kotoraya uprawlyaet oborudowaniem w sotakh —
naprimer Operation and Maintenance Centers eto UNIX
machiny. Soft dlya nih pishut na shell, na C, i na Tcl.

Рекомендовать в FAQ | Cообщить модератору | Наверх

4. «Карьера UNIX-программиста»
Сообщение от blackpepper on 05-Янв-05, 15:01 (MSK)

>Зато понял, что очень нравится программировать на perl и подобных
>ему языках.

Изучай Си и его надмножества, и особый упор на Си стандарта 99.После постижения Си ,остальные языки покажутся для тебя лепетом младенцев.

Рекомендовать в FAQ | Cообщить модератору | Наверх

5. «Карьера UNIX-программиста»
Сообщение от FastSoft (ok) on 12-Янв-05, 17:14 (MSK)

Привет! Мне кажется, что тот, кто написал, что тебе надо заниматься тем, что в кайф — прав.
В данный момент я учусь на 4 курсе. На 2-м меня привлек асм настолько, что
в данный момент написана небольшая операционная система на нем, грузящаяся с дискеты, знающая fat12, ntfs, которая умеет работать с Realtek и т.д. Данный момент жизни я проживаю работая админом FreeBSD, пися на php и понемногу реализуя TCP/IP в своей оси. Си с классами я узнал в 2001 году, но асм в моих глазах уделал беднягу си. В те времена на это повлияло буквально сообщение о дырявости gets();. И в 2002 году я ко всем приставал с вопросом о том, кому сейчас нужен асм-гуру. Ответы были точно те же, что ты сейчас получаешь от нас. Так что осталось только забить на это и выработать иммунитет к мнению людей о том, что ты «пишешь ось на асме». Теперь без разницы, что они думают по этому поводу, я пишу и все. И тебе советую найти работу для денег, а на perl писать ради удовольствия.

К слову — вроде php круче.

Рекомендовать в FAQ | Cообщить модератору | Наверх

6. «php моднее»
Сообщение от ZOD (??) on 13-Янв-05, 11:05 (MSK)

Уровень ЗП для студента $300 — $500, для прафессионала пишущего на C под UNIX — не Linux а Solaris, AIX, HP-UX иногда VMS а потом уже слюниксы с бсдями $800 — $1200 если владеешь ещё Java +$100 но разумеется shell awk sed perl и vi знать обязан плюс сокеты и RPC и kernel space модули тоже харасо. Если эмбедер и работаешь с ОСРВ то крЫша тебе $2000. Расценки примерно такие. Больше програмерам не платят, надо становиться главным в проекте или барыгой.

Рекомендовать в FAQ | Cообщить модератору | Наверх

9. «php моднее»
Сообщение от boykov (ok) on 13-Янв-05, 14:42 (MSK)

>Уровень ЗП для студента $300 — $500, для прафессионала пишущего на C
>под UNIX — не Linux а Solaris, AIX, HP-UX иногда VMS
>а потом уже слюниксы с бсдями $800 — $1200 если владеешь
>ещё Java +$100 но разумеется shell awk sed perl и vi
>знать обязан плюс сокеты и RPC и kernel space модули тоже
>харасо. Если эмбедер и работаешь с ОСРВ то крЫша тебе $2000.
>Расценки примерно такие. Больше програмерам не платят, надо становиться главным в
>проекте или барыгой.
можно вопрос? какой класс задач пишется на С под UNIX ? Окромя самих систем и СУБД?

Рекомендовать в FAQ | Cообщить модератору | Наверх

12. «И под UNIX и под Windows»
Сообщение от ZOD (ok) on 18-Янв-05, 15:54 (MSK)

Области применения С.

1) Системное програмирование
2) Графические библиотеки
3) Числодробительные задачи наряду с FORTRAN
4) Сеть
5) БазЫ данных
6) САПР
7) любые други задачи чуствительные к производительности.
8) переносимость и высокая производительность в одном флаконе

Области применеия Perl

1) Обработка текста
2) Обработка текста
3) Обработка текста
4) Не волнует производительность — скорость разработки в разЫ важнее
5) cgi скрипты
6) Прочие скрипты типа инсталяшки прикрутки разгребалки итд.
7) Когда скороть разработки важнее стоимости оборудования и производительности.
8) Переносимость туда где есть перл и используемые модули
9) Совмещает функцЫональность awk и sed плюс большЫе возможности расширения

Области применения Java
1) Заменитель C++
2) Enterprize приложения
3) Java + C числодробильня со сложными структурами данных
4) Бизнес приложения
5) Перспективно и дорого потому что модно
6) GUI и кроссплатформенные клиенты
8) Переносимость туда где есть jvm

Области применения python
1) Заменитель С++
2) Разгребание сложных структур данных
3) GUI и кросплатформенные клиенты
4) Неплохая альтернатива java
5) ХорошЫй ООЯП
6) Переносимость туда где есть python.

Можно продолжЫть про ocaml haskel sml итд, но их относительно редко применяют тк не модно. Хотя для большЫх и сложных систем эти языки очень эффективны. И в довесок очень хорошая штука UML. Оно используется для моделирования сложных проектов, и её знание отражается на Вашей ЗП.

ЗЫ. Каждый может дописать области применения.

Рекомендовать в FAQ | Cообщить модератору | Наверх

13 . «Ты бы лучше на ARM MIPS и SPARC «
Сообщение от ZOD (ok) on 18-Янв-05, 16:30 (MSK)

свою ось портанул. Заодно узнаешь что такое настоящий ассемблер. Нормальный, а не x86. И толк будет. Может твою ОСЬ ембедеры воспримут.

Уверяю что asm под спарку или там mips гораздо веселее и прямее x86го.

Если ты не под x86 на асме пишешь тогда претензии снимаются.

Асм — правильный язык, но к x86му асму это ИМХО не относится.

Рекомендовать в FAQ | Cообщить модератору | Наверх

7. «Карьера UNIX-программиста»
Сообщение от favourite (ok) on 13-Янв-05, 13:43 (MSK)

>Я ещё не гуру программирования, учусь в институте, но одно знаю точно,
>что жизнь свою хочу связать с программированием и UNIX-системами. Поэтому очень
>хочется определиться поконкретнее, чем я хочу заниматься и чем мне стоит
>(в плане хорошей перспективы и зарплаты) заниматься. Поэтому решил спросить совета
>здесь — у людей, которые уже занимаются тем о чём я
>ещё только мечтаю. Вы знаете много подводных камней. Поделитесь опытом.
>С программированием и UNIX связан уже достаточно давно, то есть, кое что
>знаю и умею. Несколько раз устраивался работать. Пробовал себя, как Java
>программиста (EJB) — понял, что не очень люблю этот язык —
>слишком уж он скучный во всех смыслах. web-программирование тоже не особо
>привлекло. Зато понял, что очень нравится программировать на perl и подобных
>ему языках. Но пока, всё что нашёл связано именно с web.
>Возник вопрос, востребованны ли гуру perl, но не web-программеры? Стоит ли
>в этом направлении углубляться? Если да, то какие направления стоит изучить
>прежде чем пытаться начать работать? Поглядываю также в сторону изучения Python,
>он похоже лучше удовлетворяет тому, чем я хотел бы заниматься.
>Сформулировав кратко всё что я тут понаписал, можно задать такой вопрос:
>Востребованны ли Perl, Python и подобные программисты и что в этой области
>стоит изучить особенно тщательно?
>
>Уточню ещё раз: мне не требуется найти работу прямо сейчас, мне нужно
>определиться в каком направлении стоит развиваться, чтобы через пару-тройку лет я
>мог стать настоящим гуру при чём таким, который сможет найти себе
>достойную работу.
>
>Спасибо всем, кто ответит. Мне важен любой опыт и мнение.
IMHO настоящиму Программисту пофиг на каком языке писать хорошую программу. Если же станешь гуру — будешь волен сам выбирать язык на котором её напишешь.

С пол года назад читал про одного монстра,который толи на перле, то ли на питоне написал прогу для самодельного segway-a (http://www.segway.com/segway/models.html — что такое сегвэй).

Так что забей на всё и изучай то что больше по душе.

Рекомендовать в FAQ | Cообщить модератору | Наверх

8. «Карьера UNIX-программиста»
Сообщение от butcher (ok) on 13-Янв-05, 13:55 (MSK)

Совет. Если ты хочешь связать свою жизнь с программированием в UNIX, определись какие области тебе больше нравятся. Соответсвенно и с языками определишься. Я знаю нескольких ребят, которые довольно неплохо разбираются во внутренностях UNIX, пишут они на С и работы им хватает выше крышы, я бы назвал их фанатами 🙂
Соответсвенно и получают они не хилые деньги, т.к. пишут заказное ПО для крупных компаний, как наших, так и «импортных» 🙂
Если будут знания и опыт, работу найдёшь, но ИМХО, Си знать нужно однозначно. Потом С++, Shell, дальше по вкусу. Ну и соответсвенно стандарты, технологии, ..

Рекомендовать в FAQ | Cообщить модератору | Наверх

10. «Карьера UNIX-программиста»
Сообщение от Kolobok on 14-Янв-05, 10:20 (MSK)

С для Unix’а это тоже самое, что библия для католика.

Если ты не знаешь Си то ты ни прикаких условиях не можешь навзываться профессионалом в Unix’е. Продвинутый пользователь — да, профессионал, а тем более программист — никогда.
Все эти перлы питоны и проч. это всего лишь приложения Unix, и пользователями unix’а являются те, кого обычно мы назваем программистами. (Те кто в окошках кликает, это в понятии Unix-идеологии пользователи приложений, а не самого Unix’a).

Заметьте я говорю профессионал, не гуру. Гуру, IMHO, отстоит от профессионала также, как профессионал отстоит от хорошего пользователя.

Ты можешь изучать какие угодно, но если ты хочешь в своем резюме написать «Unix-программист», то Си ты должен знать и уметь разобраться в сишных исходниках при любых условиях.

Если прочитать буржуйские job-сайты с требованиями к Unix-программистам, то сразу бросается в глаза следующая классификация:
1) Чистный системный программист (Очень редко встречается и пересекается с системой аналитикой. Это разработка и реализация разного рода API и концепцуальных элементов ОС);
2) Программист железа (писать драйвера и приложения по общению с внешними железками);
3) Сетевые приложения и сервисы (написание демонов и приложений, реализующих те или иные протоколы или взаимодействующие с приложениями на других хостах);
4) Приложения БД (Без комментариев);
5) И Писатели приложений приложений (К этой категории относятся web-программирование и прочее, в чистом виде, вообще говоря, к Unix’у мало привязанные).

Зачинателю треда я вижу нравится пятый путь, но к Unix’у это имеет отношение постольку, поскольку.

Так что, IMHO, язык программирования для Unix’а только Си, и все остальное тоже.
Если вы хотите стать именно ГУРУ, то обязательно в кайф.
Если нет, то просто для развития общей эрудиции.

Рекомендовать в FAQ | Cообщить модератору | Наверх

11. «Карьера UNIX-программиста»
Сообщение от jamper on 14-Янв-05, 14:11 (MSK)

Добавлю немного от себя
Все таки никс — сетевая система (в основном), поэтому кроме знания что писать нужно понимать КАК писать
Т.е. помимо изучения самого языка (вернее конкретного куска (сеть, ядро. на выбор)) необходимо понять как оно работает

Я смог писать средненькие программы после того как полгода отработал админом . А потом и вообще уполз

Если под никс, то С,perl, и поработать на самой станции/сервере

Рекомендовать в FAQ | Cообщить модератору | Наверх

14 . «Карьера UNIX-программиста»
Сообщение от Дима (??) on 19-Янв-05, 01:10 (MSK)

А какой будет расклад ЗП, если смотреть в сторону администрирования UNIX’a (с базовым знанием с), win* и сетей. Будет ли сильно влиять ОС: FreeBSD, Linux, Solaris. и т.п. И что щас наиболее востребовано в этой области? На, что как говориться потратить время и силы, чтобы потом не жалеть о том, что ты изучал и разбирался не в том.

Заранее спасибо за Ваши мнения.

Рекомендовать в FAQ | Cообщить модератору | Наверх

15 . «Карьера UNIX-админа»
Сообщение от ZOD (??) on 19-Янв-05, 11:06 (MSK)

>А какой будет расклад ЗП, если смотреть в сторону администрирования UNIX’a (с
>базовым знанием с), win* и сетей. Будет ли сильно влиять ОС:
>FreeBSD, Linux, Solaris. и т.п. И что щас наиболее востребовано в
>этой области? На, что как говориться потратить время и силы, чтобы
>потом не жалеть о том, что ты изучал и разбирался не
>в том.
>
>Заранее спасибо за Ваши мнения.

Больше всего распространены винды, потом бсди с слюниксами, потом соляра, потом HP-UX, затем AIX, VMS. Зарплата растёт в обратной зависимости от количества спецЫалистов и в прямой зависимости от твоей квалификацЫи. Чем больше людей считающих себя спецЫалистами тем она меньше. Таким образом у админа соляры на спарке зарплата будет больше, правда и задачи будут другие, и спарков меньше чем писок. Разумеется админ должен знасть awk sed C perl vi shell.

Эникейщик по винды: $200 — $500
Эникейщик под слюниксы и винды: $300 — $500
Админ виндов: $500 — $800
Админ слюниксов и виндовс эникейщик в одном флаконе: $500 + $800
КвалифицЫрованый админ виндов и слюниксов в одном флаконе знающий шо такое циска: $800 — $1000
Квалифицырованый админ слюниксов и ораклов могущий писать софт и способный к анализу: $1000 — $1200
Солярный/HP-UX/VMS админ знающия спарку/PA-RISC/Alpha и фсё што нужно квалифицЫрованому слюникс админу аналитику, плюс какой нить оракл: $1000 — $3000 в зависимости куда устроишься и за какие деньги будешь отвечать. $3000 это уже в большей степени аналитик.

Это лично мои прикидки. Желающие пусть правят. НО ИМХО shell,sed,awk,C по крайней мере надо знать что такое и уметь использовать в нужных местах нужное, не обязательно чтобы отлетало. Всё остальное до $500. Плюс оборудование, и коммерческие и свободные СУБД.

Рекомендовать в FAQ | Cообщить модератору | Наверх

16 . «Расценки Московские»
Сообщение от ZOD (??) on 19-Янв-05, 11:10 (MSK)

По России первые шесть пунктов уменьшаются на 10 — 40%

11 лучших дистрибутивов Linux для программистов

Linux предлагает больше, чем просто настольные операционные системы; вы найдете версию, настроенную для любого использования, включая программирование.

Поскольку дистрибутивы Linux имеют открытый исходный код, функциональны и снабжены инструментами, Linux предлагает процветающую среду для разработчиков и программистов. Кроме того, Linux поддерживает совместимость практически с любым языком программирования.

Вот лучшие дистрибутивы Linux для программистов.

1. Ubuntu

Ubuntu входит в число самых популярных для всех, от новичков до опытных профессионалов Linux. Для разработчиков и программистов Ubuntu LTS, или долгосрочный сервис, обеспечивает дополнительную стабильность.

Производная от Debian, Ubuntu постоянно расширяет круг своих последователей. Майкл Доминик, генеральный директор и основатель The Mad Botter INC, удивительного бота производительности, предпочитает Ubuntu за её стабильность.

Ubuntu предлагает пакеты Snap для простой установки приложений. Кроме того, в Ubuntu используется менеджер пакетов .deb, который получил широкое распространение.

Более того, Ubuntu остается совместимым со многими вариантами программного обеспечения для программистов. Его обширная база пользователей говорит о том, что Ubuntu собрала вокруг себя огромное сообщество, обеспечивающее поддержку. С небольшим количеством производных Ubuntu, включая Lubuntu, Xubuntu и Kubuntu, это лучший выбор для программистов. Ubuntu — это ОС, которая заставляет пользователей возвращаться к ней.

Почему это один из лучших дистрибутивов Linux для программистов:

  • невероятно популярный
  • отличная поддержка
  • стабильность
  • простота использования

2. Pop!_OS

От производителя Linux-компьютеров System76, поставляется Pop!_OS, операционная система Linux, разработанная специально для разработчиков, программистов и производителей. Бенджамин Фланагин, ведущий разработчик Vague Entertainment, сообщает, что он с удовольствием использует Pop!_OS, потому что это самый стабильный дистрибутив GNOME 3, с которым он когда-либо сталкивался. Доминик также одобряет Pop!_OS за то что он основан на Ubuntu.

Таким образом, Pop!_OS от System76 является одним из лучших дистрибутивов Linux для программистов. Хотя Pop!_OS выглядит привлекательно, мы обнаружили, что она лучше всего подходит для пользователей оборудования System76 или тех, кто просто наслаждается его эстетикой.

Почему это один из лучших дистрибутивов Linux для программистов:

  • фантастическая стабильность
  • GNOME 3
  • основана на Ubuntu

3. Debian

Поскольку большинство Linux дистрибутивов основаны на Debian, эта ОС хорошо подходит для программистов. Фактически, ультра-популярная Ubuntu основана на Debian. Вы получите стабильный дистрибутив, с совместимостью управления пакетами .deb. Его тестовая ветка даёт возможность попробовать современное программное обеспечение.

Почему это один из лучших дистрибутивов Linux для программистов:

  • надежная пользовательская база
  • очень стабильная
  • основа для многих популярных операционных систем Linux

4. CentOS

Red Hat Enterprise Linux (RHEL) — операционная система Linux, разработанная технологическим гигантом Red Hat. CentOS — это хорошая альтернатива RHEL. Большинство коммерческих программных продуктов RHEL легко работают на CentOS, и вы найдете управление пакетами YUM. Кроме того, CentOS может похвастаться впечатляющим хранилищем, а также коллекциями программного обеспечения Red Hat (RHSCL) для динамических языков и баз данных с открытым исходным кодом.

Таким образом, CentOS предлагает идеальное пространство для программистов. Помимо программирования, CentOS также представляет надежную серверную операционную систему.

Почему это один из лучших дистрибутивов Linux для программистов:

  • хорошо подходит для использования в корпоративных средах, а также, для разработки корпоративных приложений

5. Fedora

Точно так же Fedora — это еще один вариант RHEL для сообщества. Преимущества включают обновленные пакеты, а также автоматическую настройку. В Fedora шестимесячный цикл выпуска и обновления безболезненны. Как сообщает FossBytes, даже создатель Linux Линус Торвальдс предпочитает Fedora, а не Ubuntu или Debian.

Почему это один из лучших дистрибутивов Linux для программистов:

  • как и CentOS, это отличный выбор для корпоративного сегмента

6. Kali Linux

Если вы когда-нибудь смотрели популярный американский сериал «Мистер Робот», вы, вероятно, знакомы с Kali Linux. Основанная на Debian, Kali Linux оттачивает свою нишу в области безопасности. Поскольку Kali нацелена на тестирование на проникновение, она оснащена инструментами для тестирования безопасности. Например, вы найдете Джона Потрошителя, взломщика паролей, набор для тестирования пера Aircrack-ng и сканер безопасности веб-приложений OWASP ZAP.

Таким образом, Kali Linux — лучший выбор для программистов, особенно тех, кто сосредоточен на безопасности. Кроме того, Kali Linux хорошо работает на Raspberry Pi.

Почему это один из лучших дистрибутивов Linux для программистов:

  • множество утилит для тестирования на проникновение, безопасность веб-приложений и многое другое
  • основан на Debian и невероятно стабилен

7. Arch Linux

Arch Linux — это одна из лучших операционных систем Linux для программистов, с гибкой и настраиваемой основой.

С Arch Linux вы можете создавать индивидуальные пакеты и по-настоящему копаться в основной операционной системе. Поскольку это минималистичный дистрибутив, Arch поставляется просто с ядром Linux и менеджером пакетов Pacman. В отличие от операционных систем, таких как Debian и Ubuntu, в Arch изначально отсутствует графический интерфейс пользователя (GUI).

Учитывая сложную установку, Arch рекомендуется для опытных пользователей Linux. Более того, предлагается, если вы хотите пройти через чрезвычайно полезный, но, по общему признанию, длительный процесс создания дистрибутива. Для более простого способа установки Arch Linux попробуйте Antergos.

Почему это один из лучших дистрибутивов Linux для программистов:

  • легкий
  • настраиваемый

8. Gentoo

Как и Arch, Gentoo предоставляет полный контроль над вашим компьютером. Опять же, есть просто менеджер пакетов и ядро ​​Linux. Таким образом, практически каждый элемент установки ОС зависит от вас.

При составлении своего собственного Linux дистрибутива, вы получаете операционную систему с учетом ваших потребностей. Это особенно полезно программистам. В качестве альтернативы, установите Gentoo простым способом с Sabayon.

Почему это один из лучших дистрибутивов Linux для программистов:

  • очень гибкий
  • полностью настраиваемый

9. NuTyX

Как операционная система Linux, NuTyX очень гибок. Он предоставляет пользователю полный контроль, внедряя Linux с нуля. NuTyX поставляется с менеджером пакетов и ядром, которое позволяет пользователям создавать индивидуальные возможности, от выбора среды рабочего стола до приложений и многого другого. Он лучше всего подходит для программистов, которым нужен специализированный дистрибутив, обладающий терпением для завершения процесса установки.

Почему это один из лучших дистрибутивов Linux для программистов:

  • методология Linux с нуля
  • очень настраиваемая

10. OpenSUSE

Хотя производные Ubuntu и Debian, как правило, доминируют, OpenSUSE является хорошей альтернативой для разработки и программирования. Есть выпуск LTS, а также Tumbleweed, передовая итерация.

OpenSUSE предоставляет корпоративную среду с отличным менеджером пакетов YaST. Он стабильный и предоставляет множество инсталляторов программного обеспечения на своем веб-сайте. OpenSUSE включает в себя как фиксированные, так и обновляемые варианты выпуска, множество рабочих сред и интуитивно понятную установку приложений, что делает его одним из лучших дистрибутивов Linux для программистов.

Почему это один из лучших дистрибутивов Linux для программистов:

  • стабильный
  • современные пакеты
  • сверхмощный менеджер пакетов YaST

11. elementary OS

Хотя операционные системы Linux, включая Ubuntu, довольно удобны для пользователя, elementary OS выводит простоту использования на совершенно новый уровень. Относительно новая ОС имеет понятное видение с собственной средой рабочего стола в Pantheon.
elementary OS включает в себя собственный графический интерфейс и приложения. Из-за своей простоты, elementary OS является лучшим выбором для программистов, плохо знакомых с Linux.

Как и многие дистрибутивы Linux для настольных компьютеров, библиотека elementary OS может похвастаться великолепными приложениями по умолчанию. После первой загрузки вы найдете такие полезные вещи, как почтовый клиент, приложение для просмотра фотографий и музыкальный проигрыватель. Если вам нравится elementary OS, вы можете по достоинству оценить ChaletOS и Manjaro за их схожую философию.

Почему это один из лучших дистрибутивов Linux для программистов:

  • удобный
  • основанный на Ubuntu

Лучшие операционные системы Linux для программистов

Linux дистрибутивы обеспечивают превосходную среду для программирования и разработки. Поскольку Linux поддерживает практически все мыслимые языки программирования, он идеально подходит для разработчиков. Более того, изобилие инструментов делает Linux идеальным для программирования.

В то время как некоторые программисты предпочитают простые, но надежные дистрибутивы Linux, такие как Ubuntu или elementary OS, другим требуются продвинутые операционные системы Linux, такие как Arch или Gentoo. Кроме того, вы найдете специализированные операционные системы, такие как Kali Linux и даже бесплатные дистрибутивы корпоративного класса, включая Fedora и CentOS.

Какую ОС лучше всего использовать для программирования?

16 ответов

советую один из дистрибутивов UNIX. лучше всего FreeBSD. приведу пару доводов:
1. система абсолютно бесплатна (aka Linux)
2. Линух — это множество разных дистрибутивов. FreeBSD (да и другие юниксы) разрабатываються централизованно, что в некоторой степени гарантирует стандартизацию и надежность ПО.
3. что же касаеться собственно программирования, то FreeBSD (опять же aka Linux) распространяеться с открытым кодом, однако (на мой взгляд) реализация этой системы более удачна. Например реализация TCP/IP, разработанная для систем xBSD считаеться эталонной. А ведь нет лучшего способа стать хорошим программистом, чем изучать исходники написанные профессионалами. Согласись, научиться писать как Ричи, Керниган и т. п. было бы неплохо 🙂

Если хочешь заняться серьезным программированием под Windows, выбираешь Windows, под Linux — выбираешь Linux. А если серьезно, мне кажется, что НАЧИНАТЬ программировать лучше всего под Windows. Эта ОС более дружественна и требует меньше начальных знаний как у пользователя, так и программиста. По программированию под Windows имеется очень большое количество примеров, справочной литературы и т. д.

С другой стороны, сообщество программистов под Linux, как правило, более профессионально в плане подготовки, в силу своей специфики. Большинство начинающих программистов под Windows так и остаются начинающими после нескольких месяцев или даже лет программирования.

Думаю, мысль понятна

Originally posted by smartsoft

Если хочешь заняться серьезным программированием под Windows, выбираешь Windows, под Linux — выбираешь Linux. А если серьезно, мне кажется, что НАЧИНАТЬ программировать лучше всего под Windows. Эта ОС более дружественна и требует меньше начальных знаний как у пользователя, так и программиста. По программированию под Windows имеется очень большое количество примеров, справочной литературы и т. д.

С другой стороны, сообщество программистов под Linux, как правило, более профессионально в плане подготовки, в силу своей специфики. Большинство начинающих программистов под Windows так и остаются начинающими после нескольких месяцев или даже лет программирования.

Думаю, мысль понятна

Не совсем с тобой согласен.
Хочешь сказать, что кодеры под форточку — ламеры, а под Линукс — гуру?

Перечитай еще раз пост — я этого не утверждал.

Просто, скажем, если взять сто программеров под Windows и сто программеров под Linux, среди Linux-программеров окажется больше подготовленных.

Я имею в виду обычных программеров, которые пишут программы, не скрипты для Веба. Наверное, потому, что RAD-средства разработки под Linux появились сравнительно недавно, и далеко не так популярны, как аналогичные средства для Windows.

Зайди, например, на любой программерский форум, где тусуются линуксоиды. Вопросов от чайников там меньше всего. Никто не спрашивает, как сделать круглые кнопки, скачать компоненты, и т. п.

Originally posted by smartsoft

Перечитай еще раз пост — я этого не утверждал.

Просто, скажем, если взять сто программеров под Windows и сто программеров под Linux, среди Linux-программеров окажется больше подготовленных.

Я имею в виду обычных программеров, которые пишут программы, не скрипты для Веба. Наверное, потому, что RAD-средства разработки под Linux появились сравнительно недавно, и далеко не так популярны, как аналогичные средства для Windows.

Зайди, например, на любой программерский форум, где тусуются линуксоиды. Вопросов от чайников там меньше всего. Никто не спрашивает, как сделать круглые кнопки, скачать компоненты, и т. п.

Линукс не для чайников. Для чайников МАЗДАЕВСКИЕ ФОРТОЧКИ.

Линукс не для чайников. Для чайников МАЗДАЕВСКИЕ ФОРТОЧКИ.

Угу. Особенно когда мелкийсофт глючить начнёт. Тут конечно только чайник разобраться может. «На тысячу строк кода, по теории вероятности, приходится одна ошибка»(Цитата, не помню чья)

Угу. Особенно когда мелкийсофт глючить начнёт. Тут конечно только чайник разобраться может. «На тысячу строк кода, по теории вероятности, приходится одна ошибка»(Цитата, не помню чья)

Собственно есть винда , которая досойна уважения —
Windows 2000 Professional, но только с 3-м паком.

Зачем мне навязывать этот мультимудиа плеер, я люблю Winamp(многие меня поддержат, а многие — нет). Встроенные средства записи компактов просто жалкая пародия на Nero. А эта(как будто) «красивая графика». Ну её ладно отключить можно. А ошибок как-раз в ХР больше , чем в 2000
(вспомните кол-во твикеров и других примочек для ХР).

Ты когда нибудь скрипты для веба писал? Если да, то чем отличается от «обычного программирования»?

На тему дружественности маздая- сел я как то, решил освежить свои знания, покодить на асме с GUI, так оно на том и осталось. Не то что бы совсем низя, но как ни бейся, а красивый код не получишь. И на сях не получишь. Потому как криво в принципе. Сейчас вот к миграции готовлюсь. Ось однозначно FreeBSD. Книжечек приобрел — Разработка сетевых приложений, Взаимодействие процессов- посмотрел- блин, все четко, понятно, логика. блин.

Ты когда нибудь скрипты для веба писал? Если да, то чем отличается от «обычного программирования»?

На тему дружественности маздая- сел я как то, решил освежить свои знания, покодить на асме с GUI, так оно на том и осталось. Не то что бы совсем низя, но как ни бейся, а красивый код не получишь. И на сях не получишь. Потому как криво в принципе. Сейчас вот к миграции готовлюсь. Ось однозначно FreeBSD. Книжечек приобрел — Разработка сетевых приложений, Взаимодействие процессов- посмотрел- блин, все четко, понятно, логика. блин.

Во Франции Мелкий софт Запрещён. Там Статья за поддержку терроризма. А писать на асме под винды мне нравится. Что хошь то и пишешь

Ссылки на конкретные докумены, плз! 😡

А на С++ пишешь только то, что заставляют! 😀
А на С под Linux только то, что прикажут! 😀

Может, не в мастдае проблема? Может, что-то другое «криво в принципе»?

О да! Куда проще чайнику настроить оборудование в Linux для нормальной работы. 😀

Подготовленных к чему?
Программистов каких? Системных, прикладных?

Тоже неплохой ответ.

UNIX [COLOR=red]!=[/COLOR] FreeBSD

знака равенства никто и не ставил. но ты же не будешь отрицать, что FreeBSD — одна из веток развития UNIX?

FreeBSD is an advanced operating system It is derived from BSD, the version of UNIX® developed at the University of California, Berkeley

или это не довод?

знака равенства никто и не ставил. но ты же не будешь отрицать, что FreeBSD — одна из веток развития UNIX?

FreeBSD is an advanced operating system It is derived from BSD, the version of UNIX® developed at the University of California, Berkeley

или это не довод?

Это слишком обще и расплывчато.
UNIX — это довольно сложная и специфичная ОС, персональное применение которой бессмысленно и слишком обременительно.

Linux, FreeBSD — это ОС, которые взяли за основу упрощенную концепцию UNIX, но внутри они отличаются от неё.

Это слишком обще и расплывчато.
UNIX — это довольно сложная и специфичная ОС, персональное применение которой бессмысленно и слишком обременительно.

не согласен. в таком случае — говорить о существовании сейчас системы UNIX вообще бессмысленно. то что называлось UNIX изначально, разработанное в AT&T уже не существует в чистом виде. На ее основе в Беркли сделали BSD UNIX от которого и пошла в итоге вся ветка — NetBSD, OpenBSD, FreeBSD. а AT&T начала продавать лицензии на систему SVRx.
сейчас же все UNIX подобные системы обьединены базовым программным и пользовательским интерфесом (более или менее единым) и базовыми особенностями архитектуры, которые опять же — со времен «чистого» UNIX развивались, но работают по тем же принципам. единственное о чем можно говорить — о том, принадлежит ли конкретная версия UNIX к ветке SVRx (AIX, IRIX, Solaris) либо к ветке xBSD.


Linux, FreeBSD — это ОС, которые взяли за основу упрощенную концепцию UNIX, но внутри они отличаются от неё.

почему упрощенную? и чем они внутри отличаються? от чего отличаються? за Linux говорить не буду, а FreeBSD включает в себя многие классические реализации подсистем UNIX в частности — систему сокетов, организацию файловой подсистемы, подсистемы управления процессами. концепция сокетов со времен Беркли особенных изменений не претерпела. Реализация TCP/IP в BSD системах до сих пор считаеться эталонной (по моей информации).
если я в чем то заблуждаюсь, приму критику и конструктивные предложения.

рТПЗТБННЙТПЧБОЙЕ Ч пу UNIX. пВЪПТ

упдетцбойе

1. ччедеойе

ч 1983 ЗПДХ лЕО фПНРУПО Й дЕООЙУ тЙФЮЙ ВЩМЙ ХДПУФПЕОЩ рТЕНЙЙ фШАТЙОЗБ бУУПГЙБГЙЙ рПМШЪПЧБФЕМЕК чЩЮЙУМЙФЕМШОЩИ нБЫЙО (ACM) ЪБ ТБЪТБВПФЛХ ПРЕТБГЙПООПК УЙУФЕНЩ UNIX. ч БООПФБГЙЙ, Ч ЮБУФОПУФЙ, ЗПЧПТЙМПУШ:

хУРЕИ УЙУФЕНЩ UNIX ПУОПЧЩЧБЕФУС ОБ ХДБЮОПН ЧЩВПТЕ ОЕУЛПМШЛЙИ ЛМАЮЕЧЩИ ЙДЕК Й ЙИ ЬМЕЗБОФОПК ТЕБМЙЪБГЙЙ. вМБЗПДБТС УЙУФЕНЕ UNIX РПСЧЙМПУШ РПЛПМЕОЙЕ ТБЪТБВПФЮЙЛПЧ РТПЗТБННОПЗП ПВЕУРЕЮЕОЙС У ОПЧПК ЙДЕПМПЗЙЕК РТПЗТБННЙТПЧБОЙС, ПУОПЧПК ЛПФПТПК СЧМСЕФУС НОПЗПЛТБФОПЕ ЙУРПМШЪПЧБОЙЕ ЙНЕАЭЙИУС РТПЗТБНН.

дПМЦОЩ МЙ РТПЗТБННЙУФЩ, ЙУРПМШЪХАЭЙЕ пу UNIX, ЙОФЕТЕУПЧБФШУС ФЕН, ЮФП ДЕМБМЙ фПНРУПО Й тЙФЮЙ? йНЕЕФ МЙ ЬФП УЕЗПДОС ЛБЛПК-МЙВП УНЩУМ? ьФП ОЕПВИПДЙНП, РПУЛПМШЛХ РПОЙНБОЙЕ ЙДЕПМПЗЙЙ, ЪБМПЦЕООПК Ч РТПЕЛФ УЙУФЕНЩ, Б ФБЛЦЕ ЪОБОЙЕ БФНПУЖЕТЩ, Ч ЛПФПТПК РТПИПДЙМБ ЕЕ ТЕБМЙЪБГЙС, УРПУПВУФЧХЕФ ОБЙВПМЕЕ ВЩУФТПНХ ЕЕ ПУЧПЕОЙА.

1.1 рТЕДЩУФПТЙС

чПЪНПЦОП, чЩ ХЦЕ ЮЙФБМЙ П ФПН, ЮФП РЕТЧПОБЮБМШОП ТЕБМЙЪБГЙС ОПЧПК ПРЕТБГЙПООПК УЙУФЕНЩ, ЧРПУМЕДУФЧЙЙ ОБЪЧБООПК UNIX, РТПЧПДЙМБУШ ЗТХРРПК лЕОБ фПНРУПОБ Й дЕООЙУБ тЙФЮЙ ОБ ОЕЙУРПМШЪХЕНПН ЛПНРШАФЕТЕ DEC PDP-7, УФПСЧЫЕН Ч ЛПТЙДПТЕ AT&T Bell Laboratories. рТЙЮЕН ГЕМША ЬФЙИ ТБВПФ ВЩМП РПУФТПЕОЙЕ ХДПВОПЗП ПЛТХЦЕОЙС ДМС УПВУФЧЕООПЗП ЙУРПМШЪПЧБОЙС. оЙЛФП ОЕ УПВЙТБМУС ТБЪТБВБФЩЧБФШ ПРЕТБГЙПООХА УЙУФЕНХ, УРПУПВОХА ЪБЧПЕЧБФШ НЙТПЧХА ЙЪЧЕУФОПУФШ.

йОФЕТЕУОП РТПУМЕДЙФШ РПУМЕДПЧБФЕМШОПУФШ, Ч ЛПФПТПК ТЕБМЙЪПЧЩЧБМЙУШ ТБЪМЙЮОЩЕ ЬМЕНЕОФЩ ПРЕТБГЙПООПК УЙУФЕНЩ. уОБЮБМБ ВЩМБ РПУФТПЕОБ РТПУФБС ЖБКМПЧБС УЙУФЕНБ, ОЕ ЙНЕАЭБС ДТЕЧПЧЙДОПК УФТХЛФХТЩ. ъБФЕН ПОБ ВЩМБ ПТЗБОЙЪПЧБОБ ЛБЛ УЙУФЕНБ ЛБФБМПЗПЧ Й ЖБКМПЧ. зПЧПТС П ЖБКМБИ, ОЕПВИПДЙНП РПДЮЕТЛОХФШ ДЧЕ ПУОПЧОЩЕ ЙДЕЙ. чП-РЕТЧЩИ, Ч пу UNIX ДБООЩЕ, РТПЗТБННЩ, ЛБФБМПЗЙ Й ДБЦЕ ЖЙЪЙЮЕУЛЙЕ ХУФТПКУФЧБ ТБУУНБФТЙЧБАФУС ЛБЛ ЖБКМЩ ФПЗП ЙМЙ ЙОПЗП ФЙРБ. чП-ЧФПТЩИ, УБН ЖБКМ РПОЙНБЕФУС ЛБЛ ПДОПНЕТОЩК НБУУЙЧ ВБКФ, МЙЫЕООЩК ЛБЛПК-МЙВП ДТХЗПК УФТХЛФХТЩ. пЮЕЧЙДОПУФШ Й РТПУФПФБ ФБЛПЗП РПДИПДБ УРПУПВУФЧПЧБМЙ РПУФТПЕОЙА ХДПВОПЗП ПЛТХЦЕОЙС ЛБЛ ДМС РТПЗТБННЙУФПЧ, ФБЛ Й ДМС ДТХЗЙИ РПМШЪПЧБФЕМЕК.

уМЕДХАЭБС ЙДЕС УПУФПСМБ Ч ФПН, ЮФПВЩ ТБУУНБФТЙЧБФШ ЧЩРПМОСАЭЙЕУС РТПЗТБННЩ ЛБЛ РТПГЕУУЩ. рТЙ ЬФПН ЛБЦДЩК РТПГЕУУ НПЦЕФ РПТПЦДБФШ ДТХЗПК Й ПВНЕОЙЧБФШУС У ОЙН ЙОЖПТНБГЙЕК. ч ТЕЪХМШФБФЕ ФБЛПЗП РПДИПДБ УФБМП ЕУФЕУФЧЕООЩН ТБЪДЕМЕОЙЕ УЕЗНЕОФПЧ ЛПНБОД НЕЦДХ ОЕУЛПМШЛЙНЙ РТПГЕУУБНЙ (ЬФП СЧМСЕФУС ИБТБЛФЕТОПК ПУПВЕООПУФША пу UNIX).

оБЛПОЕГ, ЛПЗДБ ВЩМЙ ТЕБМЙЪПЧБОЩ ЛПНБОДЩ ДМС ТБЪМЙЮОЩИ ДЕКУФЧЙК У ЖБКМБНЙ Й БУУЕНВМЕТ ДМС ЗЕОЕТБГЙЙ ЧЩРПМОСЕНЩИ РТПЗТБНН, УЙУФЕНБ ХЦЕ НПЗМБ БЧФПОПНОП ЖХОЛГЙПОЙТПЧБФШ.

уМЕДХАЭЙН ЧБЦОЩН ЫБЗПН ВЩМП РТЙПВТЕФЕОЙЕ ЛПНРШАФЕТБ DEC PDP-11 Й ХУФБОПЧЛБ ОБ ОЕН ОПЧПК ПРЕТБГЙПООПК УЙУФЕНЩ. рП НОЕОЙА тЙФЮЙ ЬФП ВЩМБ ВПМШЫБС ХДБЮБ, РПУЛПМШЛХ PDP-11 ВЩМБ ПЮЕОШ ИПТПЫЕК НБЫЙОПК Й ХУРЕИ УБНПЗП ЛПНРШАФЕТБ Ч ПРТЕДЕМЕООПК УФЕРЕОЙ УРПУПВУФЧПЧБМ РТЙЪОБОЙА ПРЕТБГЙПООПК УЙУФЕНЩ, УФБЧЫЕК ЙЪЧЕУФОПК РПД ОБЪЧБОЙЕН UNIX.

л 1972 ЗПДХ Ч УЙУФЕНЕ ВЩМБ ТЕБМЙЪПЧБОБ ЧПЪНПЦОПУФШ ПТЗБОЙЪБГЙЙ НЕЦРТПГЕУУОЩИ ЛБОБМПЧ (ФБЛПЗП УРПУПВБ УЧСЪЙ, РТЙ ЛПФПТПН ЧЩЧПД ПДОПЗП РТПГЕУУБ УФБОПЧЙФУС ЧЧПДПН ДТХЗПЗП). пРЕТБГЙПООБС УЙУФЕНБ ВЩМБ РЕТЕРЙУБОБ ОБ СЪЩЛБИ ВПМЕЕ ЧЩУПЛПЗП ХТПЧОС (УОБЮБМБ ОБ СЪЩЛЕ B, ЪБФЕН C) Й РПМХЮЙМБ ОБЪЧБОЙЕ UNIX, РТЙДХНБООПЕ вТБКБОПН лЕТОЙЗБОПН. фБЛЙН ПВТБЪПН, ЪБДБЮБ, РПУФБЧМЕООБС фПНУПОПН Й тЙФЮЙ, ФП ЕУФШ РПУФТПЕОЙЕ ХДПВОПЗП РТПЗТБННОПЗП ПЛТХЦЕОЙС, ВЩМБ ЧЩРПМОЕОБ.

уФПЙФ ПФНЕФЙФШ, ЮФП ТЕБМЙЪБГЙС пу UNIX РТПИПДЙМБ Ч БФНПУЖЕТЕ, УХЭЕУФЧЕООП ПФМЙЮБАЭЕКУС ПФ ФПК, Ч ЛПФПТПК ТБЪТБВБФЩЧБЕФУС ВПМШЫЙОУФЧП ПРЕТБГЙПООЩИ УЙУФЕН, ЙНЕАЭЙИ ЛПННЕТЮЕУЛЙИ ХУРЕИ, ЛПЗДБ ДАЦЙОЩ ФБМБОФМЙЧЩИ РТПЗТБННЙУФПЧ ОБРТСЦЕООП ТБВПФБАФ Ч ПВУФБОПЧЛЕ БВУПМАФОПК УЕЛТЕФОПУФЙ, РТЙЮЕН УТПЛЙ ЪБЧЕТЫЕОЙС ТБВПФ ВЩЧБАФ ПЮЕОШ ЦЕУФЛЙНЙ. ч РТПФЙЧПРПМПЦОПУФШ ФБЛПНХ РПДИПДХ, пу UNIX УПЪТЕЧБМБ РТЙНЕТОП Ч ФЕЮЕОЙЕ ДЕУСФЙ МЕФ. у УБНПЗП ОБЮБМБ ПОБ РТЙЧМЕЛМБ ЧОЙНБОЙЕ ВПМШЫПЗП ЮЙУМБ ЪБНЕЮБФЕМШОЩИ УРЕГЙБМЙУФПЧ, НОПЗЙЕ ЙЪ ЛПФПТЩИ ЙУРПМШЪПЧБМЙ УЙУФЕНХ ДМС РТПЧЕДЕОЙС УПВУФЧЕООЩИ ТБЪТБВПФПЛ, У ПДОПК УФПТПОЩ, Й ЧОЕУМЙ УЧПК ЧЛМБД Ч ЕЕ ТБЪЧЙФЙЕ, У ДТХЗПК УФПТПОЩ.

оБЮЙОБС У 1971 ЗПДБ УЙУФЕНБ УФБМБ ЙУРПМШЪПЧБФШУС ЧОХФТЙ AT&T Bell Laboratories, Б ЧУЛПТЕ (Ч 1974 ЗПДХ) УФБМБ РТПДБЧБФШУС ЛПММЕДЦБН Й ХОЙЧЕТУЙФЕФБН, РТЙЮЕН ГЕОБ ВЩМБ ОЕЧЩУПЛПК Й ОЙЛБЛПК РПДДЕТЦЛЙ ОЕ РТЕДРПМБЗБМПУШ. ьФЙ, ФБЛ ОБЪЩЧБЕНЩЕ ЙУУМЕДПЧБФЕМШУЛЙЕ ЧЕТУЙЙ, ОХНЕТПЧБМЙУШ БТБВУЛЙНЙ ГЙЖТБНЙ, ОБЮЙОБС У 7. йОПЗДБ ПОЙ УБНПУФПСФЕМШОП ТБЪЧЙЧБМЙУШ Й ПВПЗБЭБМЙ УЙУФЕНХ ОПЧЩНЙ ЬМЕНЕОФБНЙ. оБРТЙНЕТ, ЫЙТПЛП ЙЪЧЕУФОЩК ЬЛТБООЩК ТЕДБЛФПТ vi ВЩМ ДПВБЧМЕО Л УЙУФЕНЕ хЙМШСНПН дЦПЕН ЙЪ хОЙЧЕТУЙФЕФБ вЕТЛМЙ. ч 1979 ЗПДХ, УПЗМБУОП ЛПННЕТЮЕУЛЙН ФТЕВПЧБОЙСН, AT&T ОБЮБМБ РПУФБЧМСФШ РПДДЕТЦЙЧБЕНЩЕ ЧЕТУЙЙ пу UNIX. пОЙ ОХНЕТПЧБМЙУШ ТЙНУЛЙНЙ ГЙЖТБНЙ, Й ЛТПНЕ ФПЗП, ЮБУФП УОБВЦБМЙУШ ОПНЕТПН НПДЙЖЙЛБГЙЙ. оБРТЙНЕТ, ФЕЛХЭБС ЧЕТУЙС ОБЪЩЧБЕФУС UNIX System V Release 3.1.

чЕТУЙЙ пу UNIX, РПУФБЧМСЕНЩЕ AT&T УЕКЮБУ, ТБЪТБВБФЩЧБАФУС Ч ПВУФБОПЧЛЕ, ВПМЕЕ ФЙРЙЮОПК ДМС РТПНЩЫМЕООПЗП РТПЙЪЧПДУФЧБ РТПЗТБННОПЗП ПВЕУРЕЮЕОЙС. уПЧЕТЫЕОУФЧПЧБОЙЕ УЙУФЕНЩ РТПЙУИПДЙФ Ч ПФЧЕФ ОБ ФТЕВПЧБОЙС ТЩОЛБ. фЕН ОЕ НЕОЕЕ, УЙУФЕНБ РП-РТЕЦОЕНХ ЧЩТБЦБЕФ РЕТЕДПЧХА ЙДЕПМПЗЙА ЕЕ ТБЪТБВПФЮЙЛПЧ, Й ОЕУЕФ ПФРЕЮБФПЛ ХОЙЧЕТУЙФЕФУЛПК БФНПУЖЕТЩ, Ч ЛПФПТПК ПОЙ ТБВПФБАФ. ьФП УЧПКУФЧП УЙУФЕНЩ ЮБУФП ОБЪЩЧБАФ ЕЕ ЖЙМПУПЖЙЕК, ЙНЕС Ч ЧЙДХ УРПУПВ ЙУРПМШЪПЧБОЙС UNIX’Б ПРЩФОЩНЙ РТПЗТБННЙУФБНЙ.

1.2. рТПУФБС ЖПТНХМЙТПЧЛБ ЖЙМПУПЖЙЙ УЙУФЕНЩ UNIX


йУРПМШЪХКФЕ ФТХД ДТХЗЙИ РТПЗТБННЙУФПЧ!

ч ПФМЙЮЙЕ ПФ ЛПНРШАФЕТОЩИ ПЛТХЦЕОЙК, Ч ЛПФПТЩИ ТБЪТБВПФЛБ ОПЧЩИ РТПЕЛФПЧ ПВЩЮОП ОБЮЙОБЕФУС У ОХМС, Ч пу UNIX ЪОБЮЙФЕМШОБС ЮБУФШ ТБВПФЩ ХЦЕ РТПДЕМБОБ Й ИТБОЙФУС, ПЦЙДБС ЙУРПМШЪПЧБОЙС, Ч ЛБФБМПЗБИ /bin , /usr/bin , Б ФБЛЦЕ /etc .

пУПВЕООПУФЙ пу UNIX (ЛБОБМЩ, РТПГЕУУЩ, ХУФТПКУФЧП ЖБКМПЧПК УЙУФЕНЩ) УРПУПВУФЧХАФ НОПЗПЛТБФОПНХ ЙУРПМШЪПЧБОЙА РТПЗТБНН, ЮФП РПДФЧЕТЦДБЕФУС ЙУФПТЙЕК ТБЪТБВПФЛЙ УБНПК УЙУФЕНЩ, ЧПУИПДСЭЕК Л 1969 ЗПДХ. чЩ ТЙУЛХЕФЕ ОЕ РПОСФШ УХФЙ УЙУФЕНЩ UNIX, ЕУМЙ ОЕ ВХДЕФЕ Ч УЧПЕК ТБВПФЕ ЙУРПМШЪПЧБФШ ЬФЙ ЕЕ ПУПВЕООПУФЙ.

2. йоуфтхнеофбтйк пу UNIX. зде п оен нпцоп ртпюйфбфш

фЕТНЙО ЙОУФТХНЕОФБТЙК пу UNIX ФТЕВХЕФ ОЕЛПФПТПЗП ХФПЮОЕОЙС. ч ОБЙВПМЕЕ ХЪЛПН УНЩУМЕ ПО ПЪОБЮБЕФ ЖТБЗНЕОФЩ УХЭЕУФЧХАЭЕЗП РТПЗТБНОПЗП ПВЕУРЕЮЕОЙС, ЙУРПМШЪХЕНЩЕ ЛБЛ ЛПНРПОЕОФЩ ДМС РПУФТПЕОЙС ОПЧЩИ РТПЗТБНН. ч ВПМЕЕ ЫЙТПЛПН УНЩУМЕ ЬФЙН ФЕТНЙОПН НПЦЕФ ПВПЪОБЮБФШУС УПЧПЛХРОПУФШ УБНЩИ ТБЪМЙЮОЩИ ЬМЕНЕОФПЧ пу UNIX, ФБЛЙИ ЛБЛ ХФЙМЙФЩ, РТПЗТБННЩ, ЛПНБОДЩ, СЪЩЛЙ, ЖХОЛГЙЙ Й Ф.Д. рХФБОЙГБ НПЦЕФ ЧПЪОЙЛОХФШ, Й ЮБУФП ЧПЪОЙЛБЕФ, ЙЪ-ЪБ ФПЗП, ЮФП НОПЗЙЕ ЙЪ ХРПНСОХФЩИ ЬМЕНЕОФПЧ УЙУФЕНЩ ДЕКУФЧЙФЕМШОП НПЗХФ ЙУРПМШЪПЧБФШУС ЛБЛ ЛПНРПОЕОФЩ ДМС РПУФТПЕОЙС ОПЧЩИ РТПЗТБНН.

2.1. лБЛЙЕ ЙОУФТХНЕОФЩ ПРЙУЩЧБАФУС Ч ДБООПН тХЛПЧПДУФЧЕ

ч тХЛПЧПДУФЧЕ РТПЗТБННЙУФБ ПРЙУЩЧБАФУС ЙОУФТХНЕОФЩ, ЙУРПМШЪХЕНЩЕ ДМС УПЪДБОЙС РТПЗТБНН Ч ПЛТХЦЕОЙЙ пу UNIX. ъБНЕФЙН, ЮФП Ч ТХЛПЧПДУФЧЕ ПРЙУЩЧБАФУС ОЕ ЧУЕ ЙНЕАЭЙЕУС ЙОУФТХНЕОФЩ. чПЪНПЦОП, ЮФП ОЕПРЙУБООЩЕ ЙОУФТХНЕОФЩ ПЛБЦХФУС ДБЦЕ ВПМЕЕ ЧБЦОЩНЙ ДМС чБУ, ФЕН ОЕ НЕОЕЕ Х ОБУ ОЕФ ЧПЪНПЦОПУФЙ ОБРЙУБФШ ПВП ЧУЕН. лТБФЛП РЕТЕЮЙУМЙН, ЮФП ЙНЕООП ВХДЕФ ПРЙУБОП, Б ЮФП — ОЕФ.

оЕ ПРЙУБООЩЕ Ч ДБООПН ТХЛПЧПДУФЧЕ ЙОУФТХНЕОФЩ:

  • рТПГЕДХТБ ЧИПДБ Ч УЙУФЕНХ.
  • тЕДБЛФПТЩ пу UNIX.
  • пТЗБОЙЪБГЙС ЖБКМПЧПК УЙУФЕНЩ.
  • рТПЗТБННЙТПЧБОЙЕ ОБ shell’Е.

йОЖПТНБГЙА ПВ ЬФПН НПЦОП ОБКФЙ Ч тХЛПЧПДУФЧЕ РПМШЪПЧБФЕМС, Б ФБЛЦЕ Ч ДТХЗЙИ ДПУФХРОЩИ ЛОЙЗБИ.

пРЙУЩЧБЕНЩЕ Ч ТХЛПЧПДУФЧЕ ЙОУФТХНЕОФЩ НПЦОП ЛМБУУЙЖЙГЙТПЧБФШ УМЕДХАЭЙН ПВТБЪПН:

  • хФЙМЙФЩ ДМС РПМХЮЕОЙС ЧЩРПМОСЕНЩИ РТПЗТБНН.
  • хФЙМЙФЩ ДМС ПТЗБОЙЪБГЙЙ ТБЪТБВПФЛЙ РТПЗТБННОПЗП РТПЕЛФБ.
  • уРЕГЙБМЙЪЙТПЧБООЩЕ СЪЩЛЙ.
  • йОУФТХНЕОФЩ ДМС ПФМБДЛЙ Й БОБМЙЪБ РТПЗТБНН.
  • лПНРПОЕОФЩ СЪЩЛПЧ ЧЩУПЛПЗП ХТПЧОС, ОЕ СЧМСАЭЙЕУС ЮБУФША ЙИ УЙОФБЛУЙУБ, ОБРТЙНЕТ, УФБОДБТФОЩЕ ВЙВМЙПФЕЛЙ, УЙУФЕНОЩЕ ЧЩЪПЧЩ Й ЖХОЛГЙЙ.

2.2. Shell ЛБЛ УТЕДУФЧП ЙЪЗПФПЧМЕОЙС РТПФПФЙРПЧ

чУСЛЙК ТБЪ, ЛПЗДБ чЩ ЧИПДЙФЕ Ч пу UNIX, чЩ ЙУРПМШЪХЕФЕ shell. Shell — ЬФП ЙОФЕТБЛФЙЧОЩК ЙОФЕТРТЕФБФПТ ЛПНБОД, РПЪЧПМСАЭЙК ЧЪБЙНПДЕКУФЧПЧБФШ У СДТПН пу UNIX. оП ЬФП МЙЫШ ПДОП ЙЪ РТЙНЕОЕОЙК shell’Б. Shell НПЦЕФ ВЩФШ ЙУРПМШЪПЧБО ЛБЛ СЪЩЛ РТПЗТБННЙТПЧБОЙС. рТПЗТБННЩ ОБ ЬФПН СЪЩЛЕ Ч ДБМШОЕКЫЕН ВХДХФ ОБЪЩЧБФШУС shell-РТПГЕДХТБНЙ. Shell-РТПГЕДХТЩ НПЗХФ ЙНЕФШ ТБЪЧЕФЧМЕООХА УФТХЛФХТХ, ЙЪ ОЙИ НПЦОП ЪБРХУЛБФШ РТПГЕУУЩ. ч СЪЩЛЕ ЙНЕАФУС УТЕДУФЧБ ДМС ПВТБВПФЛЙ ЙУЛМАЮЙФЕМШОЩИ УЙФХБГЙК, Б ФБЛЦЕ ДМС РЕТЕОБЪОБЮЕОЙС ЧЧПДБ Й ЧЩЧПДБ. фБЛЙН ПВТБЪПН, shell СЧМСЕФУС РПМОПГЕООЩН СЪЩЛПН РТПЗТБННЙТПЧБОЙС.

пДОЙН ЙЪ ДПУФПЙОУФЧ shell’Б СЧМСЕФУС ЧПЪНПЦОПУФШ ПТЗБОЙЪБГЙЙ ФБЛ ОБЪЩЧБЕНЩИ ЛПОЧЕКЕТПЧ — ГЕРПЮЕЛ ЛПНБОД, ЛПФПТЩЕ ВХДХФ ЧЩРПМОСФШУС ПДОБ ЪБ ДТХЗПК ФБЛЙН ПВТБЪПН, ЮФП ЧЩЧПД РТЕДЩДХЭЕК ЛПНБОДЩ СЧМСЕФУС ЧЧПДПН УМЕДХАЭЕК. ч ЛПОЧЕКЕТБИ НПЦЕФ ЙУРПМШЪПЧБФШУС ВПМШЫЙОУФЧП ЛПНБОД, ПРЙУБООЩИ Ч уРТБЧПЮОЙЛЕ РПМШЪПЧБФЕМС, РПЬФПНХ ЧТЕНС, ЪБФТБЮЕООПЕ чБНЙ ОБ ЙЪХЮЕОЙЕ уРТБЧПЮОЙЛБ РПМШЪПЧБФЕМС, ВЕЪХУМПЧОП ПЛХРЙФУС. рТПУНПФТЙФЕ ЬФПФ уРТБЧПЮОЙЛ, Й, ЧПЪНПЦОП, чЩ ОБКДЕФЕ ЛПНБОДХ, ЛПФПТБС, ВХДХЮЙ ХРПФТЕВМЕООПК У ОХЦОЩНЙ ПРГЙСНЙ, ТЕЫЙФ ФТХДОХА РТПЗТБННЙУФУЛХА РТПВМЕНХ. юЕН ВПМШЫЕ ЛПНБОД УФБОЕФ чБН ЙЪЧЕУФОП, ФЕН Ч ВПМШЫЕК УФЕРЕОЙ чЩ УНПЦЕФЕ ЧПУРПМШЪПЧБФШУС ЧПЪНПЦОПУФСНЙ пу UNIX.

ч ДБООЩК НПНЕОФ НЩ ОЕ ВХДЕН ЪБОЙНБФШУС ПВХЮЕОЙЕН РТПЗТБННЙТПЧБОЙА ОБ shell’Е. рПДЮЕТЛОЕН МЙЫШ ФХ ЧБЦОХА ТПМШ, ЛПФПТХА НПЦЕФ ЙЗТБФШ shell РТЙ ТБЪТБВПФЛЕ НБЛЕФОЩИ ПВТБЪГПЧ ЛТХРОПНБУЫФБВОПЗП РТПЗТБННОПЗП ПВЕУРЕЮЕОЙС. дЕКУФЧЙФЕМШОП, ОЕУНПФТС ОБ ФП, ЮФП ЙЪХЮЕОЙЕ shell’Б УП ЧУЕНЙ ЕЗП ОАБОУБНЙ СЧМСЕФУС ДПУФБФПЮОП УМПЦОПК ЪБДБЮЕК, ОБ РПМХЮЕОЙЕ shell-РТПЗТБНН ФТЕВХЕФУС ЗПТБЪДП НЕОШЫЕ ЧТЕНЕОЙ, ЮЕН ОБ ТБЪТБВПФЛХ РТПЗТБНН ОБ ПВЩЮОЩИ СЪЩЛБИ ЧЩУПЛПЗП ХТПЧОС.

вМБЗПДБТС ЧПЪНПЦОПУФЙ ВЩУФТПЗП РПМХЮЕОЙС ТБВПФБАЭЙИ РТПЗТБНН, shell СЧМСЕФУС НПЭОЩН ЙОУФТХНЕОФПН РТЙ ТБЪТБВПФЛЕ РТПЗТБННОПЗП ПВЕУРЕЮЕОЙС. рТЙНЕОЕОЙЕ shell’Б РПЪЧПМСЕФ ЙУРПМШЪПЧБФШ ФТХД ДТХЗЙИ Ч НБЛУЙНБМШОПК УФЕРЕОЙ, ФБЛ ЛБЛ РТЙ РТПЗТБННЙТПЧБОЙЙ ОБ shell’Е НПЦОП МЕЗЛП Й ЬЖЖЕЛФЙЧОП ЛПНВЙОЙТПЧБФШ ТБЪМЙЮОЩЕ ЛПНРПОЕОФЩ. оБ shell’Е ЮБУФП ХДБЕФУС ЪБРТПЗТБННЙТПЧБФШ ДБЦЕ ВПМШЫЙЕ РТЙЛМБДОЩЕ РТПЗТБННОЩЕ УЙУФЕНЩ. дБЦЕ ЕУМЙ ФБЛПЕ РТПЗТБННЙТПЧБОЙЕ ЧЩРПМОСЕФУС У ГЕМША РПМХЮЕОЙС НБЛЕФОПЗП ПВТБЪГБ РТПЗТБННОПК УЙУФЕНЩ, РТЕДОБЪОБЮЕООПЗП МЙЫШ ДМС РТПЧЕТЛЙ ЕЕ ГЕМЕК, НПЗХФ ВЩФШ УЬЛПОПНМЕОЩ НОПЗЙЕ НЕУСГЩ ТБВПФЩ. дЕКУФЧЙФЕМШОП, ЙНЕС ФБЛПК НБЛЕФОЩК ПВТБЪЕГ, НПЦОП ПРТЕДЕМЙФШ ДЙБРБЪПО ЧПЪНПЦОЩИ РПМШЪПЧБФЕМШУЛЙИ ПЫЙВПЛ, ЮФП ОЕ ЧУЕЗДБ МЕЗЛП РТПДЕМБФШ ОБ УФБДЙЙ РТПЕЛФЙТПЧБОЙС РТПЗТБННОПК УЙУФЕНЩ. лТПНЕ ФПЗП, НБЛЕФ РПЪЧПМСЕФ ПФТБВПФБФШ ТЕБЛГЙА УЙУФЕНЩ РТЙ ОЕЛПТТЕЛФОПН ЧЧПДЕ РПМШЪПЧБФЕМС. фБЛЙН ПВТБЪПН, НПЦОП ЙЪВЕЦБФШ ВПМШЫПЗП ПВЯЕНБ ТБВПФ РП ЙУРТБЧМЕОЙА ПЫЙВПЛ, ЧПЪОЙЛЫЙИ ОБ УФБДЙЙ РТПЕЛФЙТПЧБОЙС ТБЪТБВБФЩЧБЕНПК РТПЗТБННОПК УЙУФЕНЩ.

ч ЪБЛМАЮЕОЙЙ ЪБНЕФЙН, ЮФП ЙЪ shell-РТПГЕДХТ НПЦОП ПВТБЭБФШУС ЛБЛ Л РТПЗТБННБН, ОБРЙУБООЩН ОБ ПВЩЮОЩИ СЪЩЛБИ РТПЗТБННЙТПЧБОЙС, ФБЛ Й Л УФБОДБТФОЩН ЛПНБОДБН пу UNIX. ьФП ХДПВОП, ФБЛ ЛБЛ ЮБУФП У РПНПЭША ЙНЕАЭЙИУС ЙОУФТХНЕОФПЧ НПЦОП ЧЩРПМОЙФШ ЛБЛЙЕ-МЙВП ДЕКУФЧЙС, ЪБРЙУБЧ ЧУЕЗП РБТХ УФТПЛ ЧНЕУФП РПМХФПТБУФТБОЙЮОПК РТПЗТБННЩ ОБ ЛБЛПН-МЙВП СЪЩЛЕ.

3. фтй чйдб ртпзтбннйуфпч

лБЛ ХЦЕ ЗПЧПТЙМПУШ, НЩ ВХДЕН ТБЪМЙЮБФШ ФТЙ ЛБФЕЗПТЙЙ UNIX-РТПЗТБННЙУФПЧ, ЙУРПМШЪХС Ч ЛБЮЕУФЧЕ ЛТЙФЕТЙС ЧЙД ТБЪТБВБФЩЧБЕНЩИ ЙНЙ РТПЗТБНН. ъБНЕФЙН, ЮФП ЬФБ ЛМБУУЙЖЙЛБГЙС ОЕ ПУОПЧБОБ ОБ ЛЧБМЙЖЙЛБГЙЙ ЙМЙ ПРЩФЕ РТПЗТБННЙУФПЧ. дЕКУФЧЙФЕМШОП, ЧЩУПЛПЛЧБМЙЖЙГЙТПЧБООЩЕ РТПЗТБННЙУФЩ, ЙНЕАЭЙЕ НОПЗПМЕФОЙК ПРЩФ, НПЗХФ ВЩФШ ЙОПЗДБ ПФОЕУЕОЩ Л ЛБФЕЗПТЙЙ РТПЗТБННЙУФПЧ-ПДЙОПЮЕЛ. у ДТХЗПК УФПТПОЩ, РТПЗТБННЙУФЩ У ПФОПУЙФЕМШОП ОЕВПМШЫЙН ПРЩФПН ТБВПФЩ НПЗХФ ХЮБУФЧПЧБФШ Ч ЛПММЕЛФЙЧБИ, УПЪДБАЭЙИ РТЙЛМБДОПЕ ЙМЙ УЙУФЕНОПЕ РТПЗТБННОПЕ ПВЕУРЕЮЕОЙЕ.

3.1. рТПЗТБННЙУФЩ-ПДЙОПЮЛЙ

рТПЗТБННЙУФЩ ЬФПК ЛБФЕЗПТЙЙ РЙЫХФ РТПЗТБННЩ ФПМШЛП ДМС ФПЗП, ЮФПВЩ ПВМЕЗЮЙФШ ЧЩРПМОЕОЙЕ УЧПЕК ПУОПЧОПК ТБВПФЩ. рПМХЮЕООЩЕ ЙНЙ ТЕЪХМШФБФЩ НПЗХФ ВЩФШ РПНЕЭЕОЩ Ч ЖПОД РТПЗТБНН, ДПУФХРОЩИ ЛПММЕЛФЙЧХ, Ч ЛПФПТПН ДБООЩК РТПЗТБННЙУФ ТБВПФБЕФ. ьФП РПИПЦЕ ОБ ФП, ЛБЛ ТБЪЧЙЧБМБУШ УБНБ пу UNIX: ЛФП-ФП ЙЪЗПФБЧМЙЧБЕФ РПМЕЪОЩК ЙОУФТХНЕОФ Й ЪБФЕН ЙУРПМШЪХЕФ ЕЗП УПЧНЕУФОП У ПУФБМШОЩНЙ ЮМЕОБНЙ ПТЗБОЙЪБГЙЙ. рТПЗТБННЙУФЩ ДБООПК ЛБФЕЗПТЙЙ НПЗХФ ОЕ ЙНЕФШ ЧОЕЫОЙИ ФТЕВПЧБОЙК Л РТПЗТБННБН, ТБВПФБФШ ВЕЪ УПБЧФПТПЧ Й ВЕЪ ЛБЛПЗП-МЙВП ХРТБЧМЕОЙС ЙИ ДЕСФЕМШОПУФША. оБ РТПГЕУУ УПЪДБОЙС РТПЗТБННЩ ЧМЙСЕФ ФПМШЛП УБНБ ЪБДБЮБ, ТЕЫБЕНБС РТПЗТБННЙУФПН. пДОЙН ЙЪ ЖБЛФПТПЧ, УРПУПВУФЧХАЭЙИ ОБМЙЮЙА РТПЗТБННЙУФПЧ ДБООПК ЛБФЕЗПТЙЙ, СЧМСЕФУС ФП, ЮФП пу UNIX СЧМСЕФУС УЙУФЕНПК У ТБЪДЕМЕОЙЕН ЧТЕНЕОЙ. дЕКУФЧЙФЕМШОП, УПФТХДОЙЛЙ, ХНЕАЭЙЕ РТПЗТБННЙТПЧБФШ, НПЗХФ ТЕЫБФШ УЧПЙ РТПВМЕНЩ, НЙОХС РТПГЕДХТХ ПЖЙГЙ- БМШОПЗП ПДПВТЕОЙС ЙИ РТПЕЛФПЧ Й ОЕ ПЦЙДБОЙС Ч ФЕЮЕОЙЕ НЕУСГЕЧ, ЛПЗДБ ЫФБФОЩЕ РТПЗТБННЙУФЩ ОБРЙЫХФ РТПЗТБННЩ.

рТПЗТБННЙУФБН ДБООПК ЛБФЕЗПТЙЙ ОЕПВИПДЙНП ЪОБФШ, ЛБЛ:

  • чЩВЙТБФШ РПДИПДСЭЙК СЪЩЛ РТПЗТБННЙТПЧБОЙС.
  • лПНРЙМЙТПЧБФШ Й ЧЩРПМОСФШ РТПЗТБННЩ.
  • йУРПМШЪПЧБФШ УЙУФЕНОЩЕ ВЙВМЙПФЕЛЙ.
  • бОБМЙЪЙТПЧБФШ РТПЗТБННЩ.
  • пФМБЦЙЧБФШ РТПЗТБННЩ.
  • пФУМЕЦЙЧБФШ ЧЕТУЙЙ РТПЗТБНН.

вПМШЫБС ЮБУФШ ЙОЖПТНБГЙЙ, ОЕПВИПДЙНПК ДМС ЧЩРПМОЕОЙС ЬФЙИ ДЕКУФЧЙК, УПДЕТЦЙФУС Ч УМЕДХАЭЕК ЗМБЧЕ.

3.2. рТЙЛМБДОЩЕ РТПЗТБННЙУФЩ

рТПЗТБННЙУФЩ ДБООПК ЗТХРРЩ ТБЪТБВБФЩЧБАФ РТПЗТБННОЩЕ УЙУФЕНЩ, ЛПФПТЩНЙ ВХДХФ РПМШЪПЧБФШУС ОЕРТПЗТБННЙУФЩ. тБЪТБВПФЛБ ЛТХРОПК РТЙЛМБДОПК УЙУФЕНЩ ФТЕВХЕФ ХЮБУФЙС ГЕМЩИ ЛПММЕЛФЙЧПЧ РТПЗТБННЙУФПЧ. юМЕОБНЙ ФБЛЙИ ЛПММЕЛФЙЧПЧ НПЗХФ ВЩФШ УПФТХДОЙЛЙ ЛБЛ ЖЙТНЩ-ЪБЛБЪЮЙЛБ, ФБЛ Й ЖЙТНЩ-ТБЪТБВПФЮЙЛБ. ъБНЕФЙН, ЮФП ОЕЛПФПТЩЕ РТПЗТБННЙУФЩ, ЪБОСФЩЕ ТБЪТБВПФЛПК РТЙЛМБДОПЗП РТПЗТБННОПЗП ПВЕУРЕЮЕОЙС, Ч ВПМШЫЕК УФЕРЕОЙ ЪБОЙНБАФУС ПТЗБОЙЪБГЙЕК РТПГЕУУБ ТБЪТБВПФЛЙ РТПЗТБНН, Б ОЕ УПВУФЧЕООП РТПЗТБННЙТПЧБОЙЕН.

йОЖПТНБГЙС, ОЕПВИПДЙНБС РТПЗТБННЙУФБН ДБООПК ЛБФЕЗПТЙЙ, ЧЛМАЮБЕФ ЧУЕ ФЕНЩ УМЕДХАЭЕК ЗМБЧЩ, Б ФБЛЦЕ:

уЙУФЕНЩ ХРТБЧМЕОЙС РТПЗТБННОЩН ПВЕУРЕЮЕОЙЕН.

  • вМПЛЙТПЧЛХ ЖБКМПЧ Й УЕЗНЕОФПЧ.
  • нЕЦРТПГЕУУОПЕ ЧЪБЙНПДЕКУФЧЙЕ.
  • тБЪДЕМСЕНХА РБНСФШ.
  • хУПЧЕТЫЕОУФЧПЧБООЩЕ НЕФПДЩ ПФМБДЛЙ РТПЗТБНН.

ч ЬФПК УЧСЪЙ ОБУФПСФЕМШОП ТЕЛПНЕОДХЕН ЙЪХЮЙФШ ФПН, РПУЧСЭЕООЩК йОФЕЗТЙТПЧБООПК уТЕДЕ тБЪТБВПФЛЙ рТПЗТБНН (йутр).

3.3. уЙУФЕНОЩЕ РТПЗТБННЙУФЩ

ьФП РТПЗТБННЙУФЩ, ЪБОСФЩЕ Ч ТБЪТБВПФЛЕ РТПЗТБННОЩИ УТЕДУФЧ, СЧМСАЭЙИУС ЮБУФША ПРЕТБГЙПООПК УЙУФЕНЩ, ЙМЙ ФЕУОП У ОЕК УЧСЪБООЩИ. фБЛБС ДЕСФЕМШОПУФШ НПЦЕФ ЧЛМАЮБФШ УПЪДБОЙЕ ДТБКЧЕТПЧ ОПЧЩИ ЖЙЪЙЮЕУЛЙИ ХУФТПКУФЧ, ТБЪТБВПФЛХ УЙУФЕН ХРТБЧМЕОЙС ВБЪБНЙ ДБООЩИ ЙМЙ УПЧЕТЫЕОУФЧПЧБОЙЕ СДТБ УЙУФЕНЩ. рТПЗТБННЙУФБН ЬФПК ЛБФЕЗПТЙЙ, ЛТПНЕ ЪОБОЙС ЙУИПДОЩИ ФЕЛУФПЧ ПРЕТБГЙПООПК УЙУФЕНЩ, ОЕПВИПДЙНП ФЭБФЕМШОП ЙЪХЮЙФШ ЧУА ДПУФХРОХА ДПЛХНЕОФБГЙА РП пу UNIX.

С Программист (Unix) — Москва

Город: Москва Расположение: м. Водный Стадион

Требования к кандидату:

Возраст: 22-45 лет Образование: не имеет значения

Опыт работы по специальности — от 2 лет.

Профессиональные умения и навыки:

-Опыт разработки в среде ОС Unix (Solaris, Linux).

-Опыт разработки (C (предпочтительно)/C++) сетевых/многопоточных приложений,

Приветсвуется, но не является обязательным: — знание и опыт работы на asm x86, SPARC, MIPS — разработка модулей ядра — опыт работы со встраиваемыми системами (разработка)

-Умение работать в команде. -Ответственность. -Обучаемость.

Английский язык в объеме необходимом для чтения технических текстов

Полный рабочий день: 10:00 — 19:00 Испытательный срок: 1 месяц Оклад: на испытательном сроке — 40 000 р., после испытательного — от 50 000 р. 13 зарплата в конце года (после 1 года работы)

Оформление на работу в соответствии с трудовым кодексом РФ.

Компания оплачивает обучение и сертификацию.

Резюме и/или вопросы: devwork77@gmail.com

Re: С Программист (Unix) — Москва

>Забыл что чехов в ес полгода назад взяли, еще с тех в восточных европах не был.

К такому «компетентному» мнению обязательно следует прислушаться.

Чехия в ЕС с 2004 года.

Re: С Программист (Unix) — Москва

> Воображение хорошее. Книжки писать не пробовал? В корпорации идут за баблом в первую очередь. Стабильность, хехе да какая в наше время может быть стабильность? Станет в Китае на 30% дешевле разрабатывать — манатки соберут и уедут.

Я не про газпром, я про ибеем с SAP-ами и прочие Боинги.

> Это именно страна. 23-х летних прожект манагеров и тим лидов я видел только в России.

Основателям ютюбы сейчас меньше 30. Когда они стартовали — им было по 25.

Уверяю тебя, медианный возраст тимлида программистов в гугле и даже в MS-е — заметно меньше 30 лет, эдак 27, думаю. И это, кстати, хорошо для них — они «бегут быстрее». Совершают чуть больше ошибок, да — но мелких, и почти не совершают ошибок вида «надо было, но не сделали», которые самые печально заканчивающиеся.

> Младший руководящий состав начинается после 5 лет работы и сильно желательно в той-же самой фирме, не ранее. Это либо тимлид либо PM, и не факт что они больше инженеров получают.

OMFG. 5 лет — это сииильно больше медианного (около двух лет, IIRC) и даже среднего срока работы разработчика в одной конторе (типа 3 года); почтитай любые исследования рынка труда в IT. Т.е. «столько не живут.

Re: С Программист (Unix) — Москва

> В Польше тоже это было в 98-99 году, во времена бума. Сейчас-же все устаканилось

Да, кстати — про «сейчас все устаканилось» — смешно. Сейчас идет доткомбаббл 2.0 — венчурные капиталисты посмотрели на гугль и майспейс, и готовы дать бабла чуть ли не любому, у кого в бизнес-плане есть слова «социальная сеть», «UGC», «контекстная реклама». Стартапы (большей частью пустышки, конечно, но оказываются среди них и всякие «Одноклассники») плодятся, как грибы после дождя, что в Bay Area, что в Москве.

Так что сейчас как раз время 25-летних PM-ов.

Re: С Программист (Unix) — Москва

Я работал в 3 конторах в общей сложности 2.5 года и не видел тимлидов младше 27 лет, а PMов 30. Ни одного. Средний возраст пм-а — 35 лет, то есть как раз волна 98 года. Да и нахер нужны вчерашние студенты, когда в подчинении порой есть седые разрабы, коим под 40?

На собеседованиях был тоже не мало где, нигде не было спецов и манагеров принимающих решения моложе 27. Вообще. Западнее все еще статичнее. Например общался с сеньором из конторы работающей на F1 — чуваку около 50.

Едем далее, про среднее время пребывания в конторе. Ты отличай среднее время от креслица. Руководить тебя с парохода на бал нигде не возьмут. Всегда нужен опыт, хотя-бы год. А опыт получается при переходе от инженерной должности к руководящей. По сему у тех, кто работает 3-4-5 лет в одной конторе при небольшом росте фирмы имеет шансы значительно более высокие шансы поменять должность, чем те кто скачет как Бубка от одной конторы к другой. Просто потому, что он уже свой человек в конторе и все входы и выходы знает лучше новичков.

Направляйтесь в сад со своими фантазиями про медиальный возраст.

Re: С Программист (Unix) — Москва

Угу, в стартапах прямо все PMы. Разработчиков нет, все рулят по очереди вместе с первооткрывателями. Смех да и только. Да и сколько этих стартапов от общей массы рабочих мест? 1, 2 может целых 3%? Сколько из них протянет хотя-бы 2 года?

Опять-же это в России только начинается клонирование американских интернетов, а в США тихой сапой допетривают что нафиг плодить очередные социальные сети и блогистаны? Утомляет ведь постоянная регистрация и поиск знакомых-друзей, сколько можно находить Машу из 10Б: в одноклассниках, в вконтакте, в моем круге, в линкедине, в чертещезнаетгде? Пользы от такого мышевожения ноль, NULL. Только унылые часы просматривания друзей твоих друзей.

Re: С Программист (Unix) — Москва

>Я не про газпром, я про ибеем с SAP-ами и прочие Боинги.

Дорогуша! Sabre, IBM, RedHat, Motorola, Intel и другие дяди не от щедрости и доброты душевной переносят разработку за пределы США. А переносят чтобы было дешево и сердито клепать свои ынтерпрайз продукты. Страна развивается, растет ЗП и прочие издержки в долларах — следовательно прибыли дядей уменьшаются и повышается вероятность перемещения разработки в еще более дешевые регионы. Кстати, опыт перевода целого направления из Кракова в Китай у моторолы уже есть.

Так что в России, по крайней мере в Нерезиновой точно никаких центров разработки у бережливых ТНК не будет. Даже Питер более привлекателен, что и подтверждает наличие гугла и моторолы в нем. Имеет смысл только держать штат продавцов и консультантов для впаривания и проведения семинаров, тренингов, сертификаций и оказания помощи интеграторам.

Глава 1

Приступая к работе

В этой главе вы узнаете, что такое ОС Linux и как она связана со своим прообразом — ОС UNIX, познакомитесь с функциями и средствами, предоставляемыми средой разработки программ в ОС Linux, и напишите и выполните свою первую программу. Попутно вы получите представление о:

□ UNIX, Linux и проекте GNU;

□ программах и языках программирования в ОС Linux;

□ способах поиска ресурсов разработки;

□ статических и совместно используемых библиотеках;

□ теоретических основах ОС UNIX.

Введение в UNIX, Linux и проект GNU

В последние годы ОС Linux стала заметным явлением. И дня не проходит без того или иного упоминания Linux в электронных средствах массовой информации. Мы потеряли счет приложениям, которые стали доступны в ОС Linux и внедрившим ее организациям, включая некоторые министерства и городские администрации. Основные поставщики компьютерного оборудования, такие как корпорации IBM и Dell, поддерживают ОС Linux, а крупнейшие разработчики программного обеспечения, например компания Oracle, обеспечивают выполнение своих программ в ОС Linux. Linux стала по-настоящему конкурентоспособной операционной системой, особенно на серверном рынке.

Своим успехом она обязана системам и приложениям — предшественникам: ОС UNIX и программному обеспечению GNU. В этом разделе рассматривается, как появилась ОС Linux и каковы ее корни.

Что такое ОС UNIX?

Операционная система UNIX первоначально была разработана в компании Bell Laboratories, бывшей в то время частью телекоммуникационного гиганта, компании AT&T. Разработанная в 1970-х гг. для мини-компьютеров PDP корпорации Digital Equipment ОС UNIX стала очень популярной многопользовательской, многозадачной операционной системой для самых разных аппаратных платформ, начиная с рабочих станций PC и заканчивая многопроцессорными серверами и суперкомпьютерами.

Краткая история ОС UNIX

Строго говоря, UNIX — это торговое название, контролируемое организацией Open Group и относящееся к компьютерной операционной системе, соответствующей определенной спецификации. В этой спецификации, именуемой «The Single UNIX Specification» («Единая спецификация UNIX»), определены имена, интерфейсы и поведение всех обязательных функций операционной системы UNIX. Данная спецификация в значительной степени представляет собой расширенный набор более ранних спецификаций, стандартов Р1003 или POSIX (Portable Operating System Interface, интерфейс переносимой операционной системы), разработанных IEEE (Institute of Electrical and Electronic Engineers, Институт инженеров по электротехнике и радиоэлектронике).

Существует много коммерческих UNIX-подобных систем, таких как AIX корпорации IBM, UX компании HP и Solaris компании Sun Microsystems. Некоторые системы, например FreeBSD и Linux, свободно распространяются. В настоящее время спецификации Open Group удовлетворяют лишь несколько операционных систем, что позволяет предлагать их на рынке с названием UNIX.

В прошлом совместимость разных систем UNIX была реальной проблемой, хотя стандарт POSIX и оказывал неоценимую помощь в ее решении. В наши дни следование нескольким простым правилам сделало возможным создание приложений, работающих под управлением всех UNIX и UNIX-подобных систем. Более подробную информацию о стандартах ОС Linux и UNIX вы сможете найти в главе 18.

В последующих главах мы надеемся представить особенности программирования в ОС Linux (а следовательно, и в UNIX). Несмотря на то, что в большинстве своем программирование на языке С одинаково на разных платформах, у разработчиков Linux и UNIX есть свой взгляд на разработку программ и операционных систем.

В операционной системе UNIX, а значит и в Linux, поощряется определенный стиль программирования. Далее перечислены некоторые характеристики, общие для типовых программ и систем UNIX.

□ Простота. Многие из наиболее полезных утилит UNIX очень просты и как результат малы и понятны. KISS (Keep It Small and Simple, сохраняйте программу маленькой и простой) — отличный подход, которому следует научиться. Чем больше и сложнее система, тем наверняка в ней больше сложных ошибок, и отладка превращается в тяжелую работу, которой хотелось бы избежать.

Узкая направленность. Зачастую лучше сделать программу, хорошо выполняющую одну задачу, чем включать в каждую функцию полный набор нужного и ненужного. «Раздутую» программу трудно использовать и поддерживать ее работоспособность. Одноцелевые программы легче усовершенствовать при появлении улучшенных алгоритмов или интерфейсов. В ОС UNIX при необходимости выполнения трудных задач чаще комбинируются маленькие утилиты, чем делается попытка в одной большой программе предусмотреть все потребности пользователя.

Многократно используемые компоненты. Превращайте ядро вашего приложения в доступную библиотеку. Хорошо документированные библиотеки с простыми, но гибкими программными интерфейсами могут помочь другим пользователям разрабатывать различные варианты или применять методы в новых сферах приложения. К примерам можно отнести библиотеку базы данных dbm, представляющую собой пакет функций многократного использования, а не единую программу управления базой данных.

Фильтры. Многие приложения UNIX могут применяться как фильтры. Они преобразуют свой ввод и формируют вывод. Как вы увидите в дальнейшем, ОС UNIX обладает функциональными возможностями, позволяющими разрабатывать очень сложные приложения из других UNIX-программ путем комбинирования их оригинальными способами. Конечно, подобное многократное использование возможно благодаря методам разработки, упоминавшимся ранее.

Открытые файловые форматы. Наиболее удачные и популярные UNIX- программы применяют файлы конфигурации и файлы данных в виде обычного текста ASCII или файла на языке XML. Если в разрабатываемой вами программе можно использовать любой из этих форматов — это хороший выбор. Он позволит другим пользователям применить стандартные средства при изменении или поиске элементов конфигурации и разрабатывать новые средства для выполнения новых функций обработки файлов данных. Хорошим примером такого подхода может служить система перекрестных ссылок исходного кода ctags, записывающая сведения о местоположении символа в. виде регулярного выражения, подходящего для использования программами поиска.

Гибкость. Вы не можете точно предусмотреть заранее, как изобретательные пользователи будут применять вашу программу. Программируя, попытайтесь быть настолько гибким, «насколько это возможно. Старайтесь избегать любых ограничений размеров полей или числа записей. Если можно, пишите программу в расчете на применение в сети, способную выполняться одинаково хорошо при сетевом вызове и на локальной машине. Никогда не думайте, что вы знаете все о потребностях будущего пользователя.

Что такое Linux?

Как вы уже, возможно, знаете, Linux — это свободно распространяемая реализация UNIX-подобного ядра, низкоуровневой сердцевины операционной системы. Поскольку прообразом ОС Linux стала система UNIX, Linux- и UNIX-программы очень похожи. В действительности почти все программы, написанные для ОС UNIX, могут быть скомпилированы и выполнены в ОС Linux. Кроме того, некоторые коммерческие приложения, продаваемые для коммерческих версий UNIX, могут выполняться без изменения их двоичного кода в системах под управлением Linux.

ОС Linux была разработана Линусом Торвальдсом (Linus Torvalds) из Университета г. Хельсинки совместно с программистами UNIX, оказывавшими ему помощь по Интернету. Работа начиналась как хобби, а вдохновителем стала ОС Minix Энди Таненбаума (Andy Tanenbaum), маленькая UNIX-подобная система. Со временем Linux выросла, превратившись в сложную самостоятельную систему. Ее цель — отказ от патентованного кода и применение только свободно распространяемого программного кода.

В настоящее время ОС Linux существует для широкого набора компьютерных систем с разными типами процессоров, включая PC на 16- и 32-битных процессорах Intel x86 и совместимых с ними процессорах; рабочие станции и серверы на процессорах Sun SPARC, IBM PowerPC, AMD Opteron и Intel Itanium и даже некоторые карманные компьютеры PDA и игровые приставки Playstation 2 и 3 фирмы Sony. Если у устройства есть процессор, кто-то где-нибудь пытается добыть ОС Linux, выполняющуюся на этом процессоре!

Проект GNU и Фонд свободного ПО

ОС Linux обязана своим существованием совместным усилиям множества людей. Ядро операционной системы само по себе образует лишь малую часть пригодной к использованию системы разработки. Коммерческие системы UNIX традиционно снабжаются приложениями, обеспечивающими системные сервисы и средства. Для систем Linux подобные дополнительные программы написаны множеством разных программистов и распространяются они свободно.

Linux-сообщество (совместно с другими людьми) поддерживает идею свободного программного обеспечения (ПО), т.е. свободного от ограничений и подчиняющегося Общедоступной лицензии проекта GNU (GNU General Public License, GPL). (GNU означает GNU’s Not UNIX (GNU не UNIX).) Несмотря на то, что получение программного обеспечения может быть небесплатным, это ПО может использоваться как угодно и обычно распространяется в виде исходного программного кода.

Фонд свободного программного обеспечения (Free Software Foundation) был организован Ричардом Столлменом (Richard Stallman) — автором GNU Emacs, одного из самых известных текстовых редакторов для ОС UNIX и других систем. Столлмен — автор концепции свободного программного обеспечения и организатор проекта GNU, попытки создания операционной системы и среды разработки, совместимой с ОС UNIX, но не подверженной ограничениям, связанным с торговой маркой UNIX и предоставлением исходного программного кода. В любой момент может оказаться, что проект GNU сильно отличается от UNIX способами поддержки аппаратных средств и управления исполняемыми программами, но он будет продолжать поддерживать приложения в стиле UNIX.

Проект GNU уже снабдил программистское сообщество множеством приложений, сильно напоминающих, компоненты, входящие в системы UNIX. Все эти программы, называемые программным обеспечением GNU, распространяются в соответствии с Общедоступной лицензией GNU (GPL), копию которой можно найти на сайте http://www.gnu.org. В этой лицензии вводится понятие «авторского «лева» (copyleft)» (в противоположность авторскому праву («copyright»)). Авторское «лево» задумано как препятствие установлению каких-либо ограничений на использование свободного программного обеспечения.

Далее приведены основные примеры ПО проекта GNU, распространяемого в соответствии с лицензией GPL:

□ пакет компиляторов GCC (GNU Compiler Collection), включающий компилятор GNU С;

□ G++ — компилятор С++, включающий как часть GCC;

□ GDB — отладчик на уровне исходного кода;

□ GNU make — версия UNIX-автосборщика make;

□ Bison — генератор синтаксических анализаторов, совместимый с генератором компиляторов UNIX yacc;

□ bash — командная оболочка;

□ GNU Emacs — текстовый редактор и среда разработки.

Кроме того, было разработано и распространено на принципах свободного ПО и под контролем лицензии GPL множество других пакетов, включая электронные таблицы, средства управления программным кодом, компиляторы, интерпретаторы, интернет-средства, программы обработки графических объектов, например, графический редактор Gimp и две законченные объектно-ориентированные среды разработки: GNOME и KDE. Мы обсудим GNOME и KDE в главах 16 и 17.

Сейчас существует такое множество доступного свободного программного обеспечения, что если добавить к нему ядро Linux, можно сказать, что благодаря Linux достигнута основная цель проекта GNU — свободная UNIX-подобная система. Признавая вклад программного обеспечения проекта GNU, многие люди теперь, как правило, называют Linux-системы GNU/Linux.

Более подробную информацию о концепции свободного программного обеспечения можно получить на Web-сайте http://www.gnu.org.

Дистрибутивы Linux

Как мы уже упоминали, Linux — это только ядро. Вы можете получить исходный программный код ядра, откомпилировать его и установить на машину, а затем получить и установить много другого свободного программного обеспечения для завершения установки ОС Linux. Такие установки часто называют системами Linux, т.к. они содержат много программ помимо ядра. Большинство утилит приходит от проекта GNU Фонда свободного ПО.

Понятно, что создание системы Linux только из исходного программного кода — трудное дело. К счастью, многие люди подготовили готовые к установке дистрибутивы (часто называемые разновидностями (flavor)), обычно загружаемые из Интернета или с CD/DVD-накопителей и содержащие не только ядро, но и множество других программных средств и утилит. Часто в их состав входит реализация X Window System — графической оболочки, общей для множества систем UNIX. Дистрибутивы обычно снабжаются программой установки и дополнительной документацией (как правило, все на компакт-дисках), чтобы помочь вам установить собственную систему Linux. К некоторым хорошо известным дистрибутивам, в особенности для семейства процессоров Intel х86, относятся дистрибутивы Red Hat Enterprise Linux и его усовершенствованный сообществом родственник Fedora, Novell SUSE Linux и свободно распространяемый вариант openSUSE, Ubuntu Linux, Slackware, Gentoo и Debian GNU/Linux. Подробную информацию о множестве других дистрибутивов можно найти на Web-сайте DistroWatch по адресу http://distrowatch.com.

Программирование в ОС Linux

Многие думают, что программирование в Linux означает применение языка программирования С. Известно, что ОС UNIX первоначально была написана на С и что большинство UNIX-приложений были написаны на языке С. Но для программистов ОС Linux, или UNIX, С — не единственно возможный вариант. Далее в книге мы назовем пару альтернатив.

На самом деле первая версия UNIX была написана в 1969 г. на ассемблере PDP 7. Язык С был задуман Деннисом Ритчи (Dennis Ritchie) примерно в это время, и в 1973 г. он вместе с Кеном Томпсоном (Ken Tompson) по существу переписал на С все ядро UNIX, совершив настоящий подвиг в эпоху разработки системного программного обеспечения на языке ассемблера.

В системах Linux доступен широкий диапазон языков программирования, многие из них свободно распространяются и есть на компакт-дисках или в архивах на FTP- сайтах в Интернете. Далее перечислена часть языков программирования, доступных программистам Linux:

Искусство программирования для Unix

НАСТРОЙКИ.

СОДЕРЖАНИЕ.

СОДЕРЖАНИЕ

Искусство программирования для Unix

Вдохновившим меня Кену Томпсону и Деннису Ритчи

Unix — не столько операционная система, сколько история.

—Нил Стефенсон (Neal Stephenson)

Существует огромная разница между знаниями и опытом. Знания позволяют определить необходимые действия аналитическим путем, тогда как опыт делает верные действия рефлекторными, едва ли требующими осознанных размышлений вообще.

Целью книги является попытка преподнести читателям аспекты разработки программ в Unix, которые интуитивно известны экспертам данной операционной системы. Поэтому в данной книге, в отличие от большинства других книг о Unix, рассматривается меньше технических подробностей и больше вопросов коллективной культуры , как в явной, так и в скрытой ее формах, а также ее осознанные и неосознанные традиции. Данная книга не дает ответов на вопросы о том, ‘как сделать что-либо’, она не является сборником документов how-to, скорее в ней собраны ответы на вопросы наподобие ‘почему это следует сделать’ (why-to).

Подход why-to обладает большой практической важностью, поскольку слишком многие программы проектируются неудачно. Для большинства из них характерен большой размер, чрезвычайная сложность сопровождения и чрезмерные трудности при переносе на новые платформы или расширении, которое не было предусмотрено создавшими их программистами. Данные проблемы являются симптомами ошибочного проектирования. Авторы надеются, что эта книга позволит популяризировать некоторые относящиеся к Unix знания в области хорошего проектирования.

Книга разделена на четыре части: ‘Контекст’, ‘Проектирование’, ‘Реализация’ и ‘Сообщество’. В первой части (‘Контекст’) освещены философские и исторические аспекты, способствующие созданию основы и заинтересованности для восприятия последующего материала. Во второй части (‘Проектирование’) принципы философии Unix разворачиваются в более специфические рекомендации, касающиеся проектирования и реализации. В третьей части (‘Реализация’) основное внимание уделено программному обеспечению Unix. Четвертая часть (‘Сообщество’) касается межличностного взаимодействия и соглашений, которые делают Unix-культуру столь эффективной в своей области.

Поскольку данная книга посвящена коллективной культуре, автор с самого начала не планировал создавать ее в одиночестве. Читатели заметят, что текст включает в себя высказывания выдающихся Unix- разработчиков, основателей традиций Unix. Эти светила были приглашены прокомментировать и обсудить текст в ходе длительного процесса публичного рассмотрения книги.

Используя слово ‘мы’, автор не пытается показаться всеведущим, а старается отразить тот факт, что в книге предпринята попытка ясного выражения опыта всего сообщества.

Поскольку данная книга нацелена на передачу культуры, она включает в себя гораздо больше исторических фактов, фольклора и замечаний, чем обычная техническая книга. Наслаждайтесь: все это также является частью обучения Unix-программиста. Ни одна из исторических подробностей не является жизненно важной, но в совокупности все они существенны. Авторы полагают, что это делает книгу более интересной. Гораздо важнее понимание того, откуда произошла операционная система Unix и как она встала на путь своего развития. Это поможет развить интуитивное чувство Unix-стиля.

По той же причине авторы отказались от написания книги таким образом, как если бы история была завершенной. Читатели найдут большое количество ссылок относительно времени написания книги. Эти ссылки призваны обратить внимание читателя на то, что соответствующие факты могли устареть и должны быть перепроверены.

Кроме того, настоящая книга не является ни сборником уроков по языку С, ни руководством по командам и API-функциям операционной системы Unix. Она также не является справочником по программам sed или yacc , языкам Perl или Python, букварем для сетевого программиста или исчерпывающим описанием секретов системы X. Это не экскурс во внутреннее устройство или структуру операционной системы Unix. Указанные вопросы лучше рассмотрены в других книгах, и в тексте данной книги в соответствующих случаях имеются ссылки на них.

За пределами всех специфических технических вопросов Unix-культура обладает неписаной традицией, которая развивалась на протяжении миллионов человеко-лет[1] инженерной практики. Данная книга написана с верой в то, что понимание этой традиции и включение в свой инструментарий ее моделей поможет читателям стать лучшими программистами и проектировщиками.

Культура создается людьми, и традиционный путь изучения Unix-культуры состоит в постепенном ее восприятии через фольклор от членов сообщества. Эта книга не заменит передачи культуры в личном общении, но она способна ускорить этот процесс, позволяя изучить опыт других.

Для кого предназначена эта книга

Книга рекомендуется для опытных Unix-программистов, которые обучают начинающих разработчиков либо спорят с приверженцами других операционных систем и находят трудным ясное изложение преимуществ Unix-подхода.

Книгу стоит прочесть программистам на С, С++ или Java, имеющим опыт работы в других операционных системах и планирующим начать Unix-проект.

Книгу также следует прочесть пользователям Unix, как новичкам, так и пользователям со средним уровнем квалификации, но имеющим небольшой опыт разработки и желающим изучить методики проектирования эффективного программного обеспечения в этой операционной системе.

Материал книги также рекомендуется изучить тем, кто, не являясь Unix-программистом, осознает ценность Unix-традиций. Авторы верят в правоту этой точки зрения; Unix-философию можно использовать в других операционных системах. Поэтому в данной книге этим другим системам (в особенности системам, разработанным корпорацией Microsoft) уделено больше внимания, чем обычно в книгах по Unix. Если инструментарий и учебные примеры применимы к таким системам, в тексте имеются соответствующие замечания.

Данная книга рекомендуется для изучения разработчикам прикладных программ, рассматривающим платформы или методы реализации для крупного общецелевого или вертикального приложения. Таким специалистам книга поможет понять преимущества Unix в качестве платформы для разработки, а также Unix-традиций применительно к открытым исходным кодам как методу разработки.

В то же время читателям не стоит искать здесь подробности программирования на языке С или использования API-интерфейса ядра Unix. По этим темам имеется множество хороших книг, в частности: ‘Advanced Programming in the Unix Environment’ [81] — классический труд по изучению Unix API, а также книга ‘The Practice of Programming’ [40], которая входит в перечень рекомендованной литературы для всех программистов на языке С (а в действительности рекомендуется всем программистам на всех языках).

Как использовать эту книгу

Данная книга одновременно является практической и философской. Некоторые ее части являются афористичными и общими, в других изучаются специфические примеры Unix-разработок. Рассмотрение общих принципов и афоризмов предваряется или завершается иллюстрирующими их примерами. Примеры взяты не из учебных программ, а из реально действующего кода, который используется ежедневно.

Авторы преднамеренно избегали наполнения книги длинными листингами или примерами файлов спецификаций, даже если во многих случаях это облегчало написание (а в некоторых, возможно, и чтение).

Мастер Йода рекомендует:  Конверсия сайта или почему у владельцев сетевых ресурсов часто болит голова
Добавить комментарий