Что значит исходный код игры. Исходный код

07.03.2019

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

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

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

Программисты часто переносят исходный код из одного проекта в другой, что носит название повторного использования кода (Software reusability ).

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

Организация

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

Сложное программное обеспечение при сборке требует использования десятков, или даже сотен файлов с исходным кодом. В таких случаях для упрощения сборки обычно используются файлы проектов, содержащие описание зависимостей между файлами с исходным кодом, и описывающие процесс сборки. Эти файлы так же могут содержать и другие параметры компилятора и среды проектирования. Для разных сред проектирования могут применяться разные файлы проекта, причем в некоторых средах эти файлы могут быть в текстовом формате, пригодным для непосредственного редактирования программистом с помощью универсальных текстовых редакторов, в других средах поддерживаются специальные форматы, а создание и изменения файлов производится с помощью специальных инструментальных программ. Файлы проектов обычно включают в понятие «исходный код». В подавляющем большинстве современных языковых сред обязательно используются файлы проектов вне зависимости от сложности прочего исходного кода, входящего в данный проект. Часто под исходным кодом подразумевают и файлы ресурсов, содержащие различные данные, например, графические изображения, нужные для сборки программы.

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

Качество

В отличие от человека, для компьютера нет «хорошо написанного» или «плохо написанного» кода. Но то как написан код может сильно влиять на процесс сопровождения ПО . О качестве исходного кода можно говорить в контексте следующих параметров:

  • читаемость кода (в том числе наличие или отсутствие комментариев к коду - блоков произвольного текста, опускаемых программой-компилятором);
  • лёгкость в поддержке, тестировании, отладке и устранении ошибок, модификации и портировании;
  • низкая сложность;
  • низкое использование ресурсов - памяти, процессора, дискового пространства;
  • отсутствие замечаний, выводимых компилятором;
  • отсутствие «мусора» - так называемых «мертвых переменных» (то есть переменных, которые не используются), операторов, которые никогда не исполняются, комментариев от предыдущих версий данного кода, потерявших свой смысл и т. д.

Неисполняемый исходный код

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

В таких случаях исходным кодом считается форма данной работы, предпочтительная для её редактирования. В лицензиях, предназначенных не только для ПО, она также может называться версией в «прозрачном формате». Это может быть, например:

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

и наконец, сам файл, если он удовлетворяет указанным условиям, либо если более удобной версии просто не существовало.

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

  • Выбирая язык, сконцентрируйтесь на том, в каких целях вы хотите создавать программные коды, и уже потом выбирайте начальный язык. К примеру, если вы хотите заниматься разработкой веб-сайтов, то вам следует начать с изучения HTML, а затем дополнить его языками CSS, JavaScript и PHP. Если вы хотите создавать программы для компьютеров, то начните изучать C ++ или любой другой основной язык программирования.
  • Если вы станете профессиональным программистом, то вы быстро поймете, что вы никогда не будете использовать тот язык, который вы изначально выучили, для вашей работы. Вместо этого, вы будете все время продолжать учить новые языки через документацию и эксперименты.

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

  • Вот только несколько популярных сайтов: Bento, CodeAcademy, Code.org, html.net, Khan Academy, Udacity, W3Schools и многие другие.
  • На wikiHow тоже можно найти большое разнообразие начальных пособий для разных языков.
  • Вы можете найти обучающие видео практически для любого языка на YouTube.
  • Stack Exchange - это один из самых популярных форумов, на котором профессиональные программисты отвечают на любые вопросы пользователей.
  • Скачайте хороший текстовый редактор. Многие языки программирования позволяют использование внешних текстовых редакторов для написания программ. Найдите текстовый редактор, который будет отображать отступы и кодовую разметку.

    • Популярные программы включают Notepad++ (Windows), TextWrangler (OS X) и JEdit (любая система).
  • Скачайте любые необходимые компиляторы. Некоторые языки программирования требуют компилятор для отображения исходного кода, который вы написали. Компиляторы транслируют исходный код в эквивалентную программу на языке низкого уровня, которая затем обрабатывается компьютером. Многие компиляторы являются открытыми и бесплатными программами. Языки, которые требуют использование компиляторов, включают:

    • BASIC
    • Fortran
    • Pascal
  • Начните ваш первый проект. Выберите хороший вводный проект, который позволит вам испробовать ваши новые навыки. В интернете существует множество предложений и пособий по этой теме; например, вы можете начать с создания простых веб-сайтов с HTML, простых баз данных и функций с PHP или простых программ на любом из языков, требующих использование компиляторов.

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

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

    Качество приложений и интернет-проекта в целом сильно зависит от мастерства программиста, разрабатывающего сайт, программный код которого может содержать ошибки, сильно влияющие на скорость загрузки веб-страниц и на многие другие аспекты работы всего сайта, в том числе связанные с безопасностью. Поэтому обнаружение и устранение ошибок в коде — обязательная составляющая при создании любого веб-сайта. Доверить разработку сложного корпоративного сайта лучше всего специалистам (если вы таковым не являетесь), ведь некоторые ошибки трудно обнаружить, а многие из них могут в дальнейшем приводить к замедлению загрузки и неправильному отображению веб-страниц в браузерах компьютеров интернет-пользователей. Слишком долгая загрузка может вызвать отток посетителей с сайта и снижение качества трафика, что снижает прибыль и эффективность от использования коммерческих интернет-проектов.

    Сперва HTML и CSS

    Основой веб-документа является код, написанный на языке разметки HTML. Язык разметки не стоит путать с языком программирования, а в чем собственно заключается разница подробно написано . В принципе, с помощью набора команд, который предлагает для разработчика сайта HTML, можно задавать все необходимые параметры статичного веб-документа — расположение элементов (блочная разметка), заголовки, абзацы, таблицы, изображения и т.д. А с помощью CSS, специальной надстройки для HTML, можно позиционировать все перечисленные объекты разметки, менять их стиль — цвет, размер, формат и т.п.

    Потом JavaScript

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

    И наконец PHP

    В случае, когда требуется написание сложных и объемных кодов, например для форумов или гостевых книг, программисты обращаются за помощью к серверным языкам программирования, и в частности к . Коды PHP выполняются на стороне сервера, поэтому их работа может быть несколько замедлена, поскольку зависит от скорости соединения с удаленным компьютером и степени его загруженности. С помощью PHP и команд SQL (специальный язык запросов к реляционной базе данных) можно организовать взаимодействие сайта с базами данных и создавать интерактивные интернет-проекты – форумы, интернет-магазины, доски объявлений, различные каталоги и т.д.

    Основа сайта — программный код was last modified: Март 3rd, 2016 by Admin

    (Руководство разработчика по микроконтроллерам семейства HCS08)

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

    Ранее нами было отмечено, что МК семейства HCS08 не позволяют выполнять операции стирания и программирования флэш-памяти, исполняя программу управления этими режимами также из флэш-памяти. Обязательно следует сначала переписать программный код, отвечающий за операции стирания и программирования, в оперативную память, а затем запустить этот код на исполнение. В процессе стирания и программирования к модулю флэш-памяти будет приложено повышенное напряжение. Однако это не приведет к срыву работы программы, поскольку в данный момент времени она будет исполняться из ОЗУ.

    Компания NXP разработала набор утилит на ассемблере, который упрощает создание собственного программного кода для программирования флэш-памяти под управлением рабочей программы устройства. Эти утилиты размещены в файле doonstack.asm . Этот файл следует включить в проект, как показано на Рис. 12.3 .

    Рис. 12.3. Окно проекта с включенным файлом doonstack.asm .

    Содержимое файла doonstack.asm представлено ниже. Приведен оригинальный текст используемого программного кода, поэтому комментарии переводу не подлежат.


    ;* This stationery is meant to serve as the framework for a *
    ;* user application. For a more comprehensive program that *
    ;* demonstrates the more advanced functionality of this *
    ;* processor, please see the demonstration applications *
    ;* located in the examples subdirectory of the *
    ;* Metrowerks Codewarrior for the HC08 Program directory *
    ;**************************************************************
    ; export symbols
    XDEF DoOnStack
    XDEF FlashErase
    XDEF FlashProg
    ; we use export "Entry" as symbol. This allows us to
    ; reference "Entry" either in the linker .prm file
    ; or from C/C++ later on

    ; include derivative specific macros
    Include "MC9S08GB60.inc"

    Две следующие строки следует раскомментировать и назначить желаемые значения.

    ;mPageErase equ $40
    ;mByteProg equ $20
    mFACCERR equ $10
    mFPVIOL equ $20
    mFCBEF equ $80
    ; variable/data section
    MY_ZEROPAGE: SECTION SHORT
    ; Insert here your data definition. For demonstration, temp_byte is used.
    ; temp_byte ds.b 1
    ; code section
    MyCode: SECTION
    ;**************************************************************
    ; this assembly routine is called the C/C++ application
    DoOnStack: pshx
    pshh ;save pointer to flash
    psha ;save command on stack
    ldhx #SpSubEnd ;point at last byte to move to stack;
    SpMoveLoop: lda ,x ;read from flash
    psha ;move onto stack
    aix #-1 ;next byte to move
    cphx #SpSub-1 ;past end?
    bne SpMoveLoop ;loop till whole sub on stack
    tsx ;point to sub on stack
    tpa ;move CCR to A for testing
    and #$08 ;check the I mask
    bne I_set ;skip if I already set
    sei ;block interrupts while FLASH busy
    lda SpSubSize+6,sp ;preload data for command
    cli ;ok to clear I mask now
    bra I_cont ;continue to stack de-allocation
    I_set: lda SpSubSize+6,sp ;preload data for command
    jsr ,x ;execute the sub on the stack
    I_cont: ais #SpSubSize+3 ;deallocate sub body + H:X + command
    ;H:X flash pointer OK from SpSub
    lsla ;A=00 & Z=1 unless PVIOL or ACCERR
    rts ;to flash where DoOnStack was called
    ;**************************************************************
    SpSub: ldhx LOW(SpSubSize+4),sp ;get flash address from stack
    sta 0,x ;write to flash; latch addr and data
    lda SpSubSize+3,sp ;get flash command
    sta FCMD ;write the flash command
    lda #mFCBEF ;mask to initiate command
    sta FSTAT ; register command
    nop ;[p] want min 4~ from w cycle to r
    ChkDone: lda FSTAT ; so FCCF is valid
    lsla ;FCCF now in MSB
    bpl ChkDone ;loop if FCCF = 0
    SpSubEnd: rts ;back into DoOnStack in flash
    SpSubSize: equ (*-SpSub)
    ;**************************************************************
    FlashErase: psha ;adjust sp for DoOnStack entry

    lda #mPageErase ;mask pattern for page erase command
    bsr DoOnStack ;finish command from stack-based sub
    rts
    ;**************************************************************
    FlashProg: psha ;temporarily save entry data
    lda #(mFPVIOL+mFACCERR) ;mask
    sta FSTAT ;abort any command and clear errors
    lda #mByteProg ;mask pattern for byte prog command
    bsr DoOnStack ;execute prog code from stack RAM
    ais #1 ;deallocate data location from stack
    rts
    ;**************************************************************

    Также в тексте программного кода на С необходимо директивой #include подключить файл doonstack.h , текст которого представлен ниже.


    /* */
    /* Project Name: doonstack.h */
    /* Last modified: 04/11/2004 */
    /* By: r60817 */
    /* */
    /* */
    /**********************************************************************/
    /* */
    /* Description: MC9S08GB60_FLASH_DOONSTACK - demo */
    /* */
    /* */
    /* Documentation: MC9S08GB60/D Rev. 2.2 */
    /* HCS08RMv1/D Rev. 1(4.8FLASH Application Examples) */
    /* */
    /* This software is classified as Engineering Sample Software. */
    /* */
    /**********************************************************************/
    /* */
    /* Services performed by FREESCALE in this matter are performed AS IS */
    /* and without any warranty. CUSTOMER retains the final decision */
    /* relative to the total design and functionality of the end product. */
    /* FREESCALE neither guarantees nor will be held liable by CUSTOMER */
    /* for the success of this project. FREESCALE DISCLAIMS ALL */
    /* WARRANTIES, EXPRESSED, IMPLIED OR STATUTORY INCLUDING, BUT NOT */
    /* LIMITED TO, IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A */
    /* PARTICULAR PURPOSE ON ANY HARDWARE, SOFTWARE ORE ADVISE SUPPLIED */
    /* TO THE PROJECT BY FREESCALE, AND OR NAY PRODUCT RESULTING FROM */
    /* FREESCALE SERVICES . IN NO EVENT SHALL FREESCALE BE LIABLE FOR */
    /* INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT. */
    /* */
    /* CUSTOMER agrees to hold FREESCALE harmless against any and all */
    /* claims demands or actions by anyone on account of any damage, or */
    /* injury, whether commercial, contractual, or tortuous, rising */
    /* directly or indirectly as a result of the advise or assistance */
    /* supplied CUSTOMER in connection with product, services or goods */
    /* supplied under this Agreement. */
    /* */
    /**********************************************************************/
    /*
    - this file API between main.c and doonstack.asm
    */
    #ifndef _doonstack
    #define _doonstack
    #ifdef __cplusplus
    extern "C" { /* our assembly functions have C calling convention */
    #endif
    void DoOnStack(void); /* prototype for DoOnStack routine */
    void FlashErase(unsigned char *); /* prototype for FlashErase routine */
    /* Page Erase command */
    void FlashProg(unsigned char *, unsigned char); /* prototype for FlashProg routine */
    /* Byte Program command */
    #ifdef __cplusplus
    }
    #endif

    #endif /* _doonstack */
    /**********************************************************************/

    В нашем примере для записи энергонезависимых данных резервируется блок в 512 байт. Такой размер блока выбран потому, что это минимально разрешенный для стирания объем ячеек флэш-памяти в микроконтроллере MC9S08QG8. Выбранный блок будет располагаться в начале адресного пространства резидентной флэш-памяти МК: от 0xE000 до 0xE1FF. Программный код будет начинаться с адреса 0xE200 и может занимать адресное пространство вплоть до 0xFFFF.

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

    В стандартном проекте была запись:


    ROM = READ_ONLY 0xE000 TO 0xFFAD;

    Ее следует заменить:

    SEGMENTS /* Here all RAM/ROM areas of the device are listed */
    ROM = READ_ONLY 0xE200 TO 0xFFAD;

    В нашем примере также использован режим защиты от записи области программного кода, т.е. адресного пространства от 0xF200 до 0xFFFF. На Рис. 12. 4 показан процесс формирования кода для регистра FPROT, который обеспечивает защиту адресного пространства 0xF200...0xFFFF от случайного стирания/записи. Семь старших битов последнего адреса 0xF1FF незащищенного адресного пространства должны быть записаны в регистр FPROT.

    Адрес A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
    0xE1FF 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1
    FPROT FPS7 FPS6 FPS5 FPS4 FPS3 FPS2 FPS1 FPDIS
    0xE0 1 1 1 0 0 0 0 0

    Рис. 12.4. Формирование записи кода зашиты для регистра FPROT.

    Пример 12.1. Операции с энергонезависимыми данными во флэш-памяти

    // Демонстрационная плата DEMO9S08QG8
    // стирание/запись/чтение резидентной флэш-памяти
    #include /* for EnableInterrupts macro */
    #include "derivative.h" /* include peripheral declarations */
    #include "hcs08.h" /* Это наш файл с объявлениями! */
    #include "doonstack.h"
    #define BUSCLK 8000000
    #define vFCDIV (BUSCLK/200000-1)
    char fdata, operation;
    unsigned int faddress;
    // Назначается область защищенных от записи адресов: от 0xE200 до 0xFFFF
    const byte NVPROT_INIT @0x0000FFBD = 0xE0;
    // Инициализация МК
    void mcu_init(void)
    {
    SOPT1 = bBKGDPE; // Разрешение функции линии отладки BKGD
    ICSSC = NV_FTRIM; // Записать значение подстройки FTRIM
    ICSTRM = NV_ICSTRM; // Записать значение подстройки TRIM
    ICSC2 = 0; // ICSOUT = DCOOUT / 1
    // BUSCLK = 8 МГц
    FCDIV = vFCDIV; // Записать значение кода делителя для частоты FCLK
    // (FCLK = 200 кГц)
    }
    #pragma inline
    // Функция чтения байта из ячейки памяти с заданным адресом
    char flash_read(unsigned int address)
    {
    unsigned char *pointer;
    pointer = (char*) address;
    return (*pointer);
    }
    // Функция записи байта в ячейку памяти с заданным адресом
    char flash_write(unsigned int address, unsigned char data)
    {
    unsigned char *pointer;
    pointer = (char*) address;
    FlashProg(pointer,data); // Вызов функции программирования флэш-памяти
    if (FSTAT_FACCERR) data=1; else data=0;
    if (FSTAT_FPVIOL) data|=2;
    return(data);
    }
    // Функция стирания заданного блока в области флэш-памяти
    unsigned char flash_sector_erase(unsigned int address)
    {
    unsigned char *pointer, res;
    pointer = (char*) address;
    FlashErase(pointer);
    if (FSTAT_FACCERR) res=1; else res=0;
    if (FSTAT_FPVIOL) res|=2;
    return(res);
    }
    void main(void)
    {
    mcu_init();
    fdata = 0;
    faddress = 0xE000;
    operation = 0;
    while (1)
    {
    switch (operation)
    {
    case 1: // Стирание блока
    fdata = flash_sector_erase(faddress);
    operation = 0;
    break;
    case 2: // Запись байта
    fdata = flash_write(faddress,fdata);
    operation = 0;
    break;
    case 3: // Чтение байта
    fdata = flash_read(faddress);
    operation = 0;
    break;
    }
    }
    }

    Рассмотрим методику тестирования программного кода Примера 12.1. Для этого в окно отладчика Data добавим три переменные: faddress , fdata , operation . Также установим для окна режим периодического обновления, например, через 200 мс.

    Перед запуском на исполнение программного кода запишите в переменную faddress адрес для записи, а в переменную fdata — байт данных для записи. Далее в переменную operation запишите код 0x02. После запуска программного кода примера начнется запись байта данных в выбранную ячейку флэш-памяти. Обратите внимание, что выбранная ячейка должна находиться в стертом состоянии, т.е. в ней должен быть код 0xFF.

    Для того чтобы стереть блок памяти 0xE00...0xE1FF, запишите в faddress любой адрес из указанного диапазона и установите переменную operation в 1. Далее запустите код снова на исполнение.

    Прочитать данные из флэш-памяти тоже просто. Для этого запишите в переменную faddress код адреса, в переменную operation — код 0x03. Содержимое выбранной ячейки флэш-памяти отобразится в переменной fdata после исполнения программного кода.

    Обратите внимание, что функции flash_write() и flash_sector_erase() возвращают переменную типа chare с кодом ошибки при выполнении действия: 0 — не было ошибки, 0x02 — была ошибка доступа, 0x04 — была попытка стирания/записи защищенного адресного пространства. Обе упомянутые функции требуют для своего исполнения около 35 байт стековой памяти. Если реальная область стека окажется меньше, то произойдет фатальная ошибка. Восстановить работоспособность программы можно будет только сбросом МК.

    Для того чтобы посмотреть в отладчике изменения флэш-памяти, необходимо внести некоторые изменения в конфигурацию отладчика. Следуя установкам по умолчанию, отладчик считывает область флэш-памяти МК только один раз после запуска сессии отладки. Для изменения конфигурации выберите в главном меню отладчика опцию MultilinkCyclonPro > Debug Memory Map . Откроется окно, показанное на Рис. 12.5 , а . Выберите в этом окне memory block 3 и нажмите кнопку Modify/Details . В новом окне, показанном на Рис. 12.5 , б , выберите отмеченную опцию. Она позволит отладчику периодически обновлять окно памяти.

    Рис. 12.5. Изменение конфигурации отладчика для периодического обновления содержимого окна памяти.

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

    Энциклопедичный YouTube

      1 / 3

      Science show. Выпуск 33. Научные киноляпы 2

      Основы программирования: Исходный код

      Ответы на вопросы 1: Исходный код

      Субтитры

    Назначение

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

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

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

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

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

    Организация

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

    Сложное программное обеспечение при сборке требует использования десятков или даже сотен файлов с исходным кодом. В таких случаях для упрощения сборки обычно используются файлы проектов, содержащие описание зависимостей между файлами с исходным кодом и описывающие процесс сборки. Эти файлы также могут содержать параметры для компилятора и среды проектирования. Для разных сред проектирования могут применяться разные файлы проекта, причём в некоторых средах эти файлы могут быть в текстовом формате, пригодном для непосредственного редактирования программистом с помощью универсальных текстовых редакторов, в других средах поддерживаются специальные форматы, а создание и изменения файлов производится с помощью специальных инструментальных программ. Файлы проектов обычно включают в понятие «исходный код». Часто под исходным кодом подразумевают и файлы ресурсов, содержащие различные данные, например графические изображения, нужные для сборки программы.

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

    Качество

    В отличие от человека, для компьютера нет «хорошо написанного» или «плохо написанного» кода. Но то, как написан код, может сильно влиять на процесс сопровождения ПО . О качестве исходного кода можно судить по следующим параметрам:

    • читаемость кода (в том числе наличие