Кіріспе

Макроға негізделген бағдарламалау тілі. Web – Дональд Э. Кнуттың «сауатты бағдарламалау» деп атаған тұжырымының алғашқы іске асырылуы ретінде құрылған компьютерлік бағдарламалау жүйесі: бағдарламалық кодты түсіндірме мәтінге ендіру арқылы, әдеби туындылар сияқты жасау мүмкіндігі, әдетте көптеген бағдарламалау тілдерінде қолданылатын кері тәсілден өзгеше, адамдарға түсінікті болу үшін ыңғайлы ретпен, компилятордың талабына сәйкес емес ретпен ұйымдастыру. Web екі қосымша бағдарламадан тұрады: TANGLE, бастапқы мәтіндерден компиляцияланатын Pascal кодын жасайды, ал WEAVE, TeX арқылы әдемі форматталған, басып шығаруға дайын құжаттаманы дайындайды. CWEB – C бағдарламалау тілі үшін Web нұсқасы, ал noweb – Web-тен (атынан-ақ көрініп тұрғандай) шабыттанған, бірақ тілге тәуелді емес жеке сауатты бағдарламалау құралы. Web-те жазылған ең маңызды бағдарламалар – TeX және Metafont. Қазіргі TeX таратулары Web көзін C тіліне түрлендіру үшін Web2C бағдарламасын пайдаланады.

Философия

Басқа көптеген құжаттама жасаушы бағдарламалардан өзгеше, олар құжаттаманы баяндамаларға шектеседі, WEB тәсілі – бастапқы кодты қалай жасағанын түсіндіретін мақала жазу болып табылады. TeX мақалалары сияқты, код құжаттама ағынына сәйкес бөлімдерге бөлінеді. Мысалы, CWEB-те код бөлімдері дәлелдемелер тізбегінде үздіріссіз араласып кетеді.

Ерекшеліктері

Қолмен және автоматты түрде TeX кодын енгізе алады. C кодын жақсы форматтау үшін пішімдеуді жүзеге асыруға болады. Бөлімдерді анықтауға болады, сондай-ақ құжаттама мен кодтарды қамтуға болады, оларды кейін басқа бөлімдерге қосуға болады. Бас файл мен негізгі C кодын бір файлға жазып, бірдей бөлімдерді қайта пайдалануға болады, содан кейін оларды компиляция үшін бірнеше файлға тоқуға болады. Кез келген ескертулер мен қателер бастапқы кодқа сілтеме жасау үшін #line директиваларын қолдануға болады. Файлдарды қосу мүмкіндігі бар. Компиляциялау/басып шығару кезінде кодқа автоматты түрде біріктірілетін файлдарды өзгертуге болады. Басып шығарылған нұсқада идентификаторлар мен бөлімдер атауларының тізімін жасауға болады.