Оригинален пост: тук.

В 0-та публикация от тази серия предоставяме дефиниция на програма.

Защита Програма — набор от последователности

В последната публикация (2-ра публикация) обсъдихме как всички свойства на програмите също са програми. Но, ако забележите, ние почти противоречахме на цялата цел на тази поредица да обясняваме всичко като програма, когато споменахме, че можете да разглеждате хиперсвойствата не като програми, а по-скоро като набор от програми.

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

Ще обсъдим „колекции от обекти“ по отношение на „типове“, тъй като това е по-често срещаната терминология в изчислителния жаргон/реторика (въпреки че теоретиците често ще използват набори), особено от практиците (т.е. инженерите).

Ще забележите обаче, че нашата първоначална дефиниция на програма разчита на съществуването на понятието набор. По този начин има известна кръговрат в нашата дискусия тук, но вместо да се опитваме да дефинираме програма за математически основи (тъй като предпочитам дори да не се опитвам да интегрирам Гьодел), базирана на виждането на всичко като програми, ние просто се опитваме да рамкираме дискусиите за изкуствена биология изследвания.

В изследванията на изкуствената биология имаме работа със системи с такава огромна сложност, които трябва да бъдат разбрани отдолу нагоре и конструирани от нулата, че установяването на полезни основополагащи концепции изглежда трудно изискване.

Затова в тази публикация се опитваме да установим как дори наборът в оригиналната ни дефиниция за това какво е програма може винаги да се разглежда и използва като програма.

Видове

Нека започнем, като дефинираме какво е „Тип“ за тази дискусия.

Защита 5 — Тип — набор оттермини(обекти), за които всеки термин е квалифициран от някакъвквалификатор, и че има решима връзка (квалификация) между всеки термин и квалификатора за тип.

Има минимална разлика между комплекти и типове. Той разглежда един и същи платоничен и езотеричен обект по два различни начина: колекция. Тук обаче ще избягваме да се гмуркаме в разликите между различните теории на множествата и теориите на типовете. Достатъчно добро е за целите на това писание просто да разбирате тип като формализиран изглед на колекции.

Ние всъщност представяме няколко наши собствени теоретични концепции, за да ускорим темпото на нашата дискусия. Например, какво е квалификатор на тип и как той квалифицира условията на типа? Квалификаторът е, просто казано, всеки обект. Твърди се, че квалификационната преценка зависи от преводач. Всяка квалификация трябва да се разглежда като програма, която представлява „индуктивно/дедуктивно извеждане“ на термина от квалификатора или обратно. С други думи, квалификацията често е това, което ние, като хора, бихме нарекли доказателство (но може би по-близо до това, което социално бихме нарекли „история“, отколкото много по-строго ограниченото „математическо доказателство“ “).

По този начин, архитектурата на теоретичната единица, която наричаме тип, е 3-кортеж ⟨Q,Σ,\Tau⟩, където Q е квалификаторът, Σ е наборът от квалификационни доказателства и \Tau са термините.

Свойството разрешимост на доказателствата за квалификация подчертава, че нещо (или някой) – „интерпретаторът“ – трябва да изпълни програмата/доказателството за квалификация и че трябва да се прекрати, т.е. трябва да може да бъде решено от това, което/който и да го управлява. Това свойство за решаване е това, което всъщност прави един обект термин от тип. Преводачът трябва да може да реши, че конкретният обект е доказуемо от този тип (отново където „доказателството“ е оставено на преводача, но фактът, че решението е взето по един или друг начин, е по-„универсално“ изискване) .

Може би това, което е най-интересно е, че всеки термин в даден тип е програма — те са програми с 1 последователност, т.е. програми с дължина 1. Но още по-интересното е, че самият тип също е програма. Самият тип е набор от последователности, както е дефинирано в 0-та публикация от тази серия.

По този начин всички термини в един тип са едночленни последователности. А типовете са програма, съставена от набор от едночленни последователности.

Контексти

За целите на нашата дискусия ще споменем две важни точки:

  1. Всички програми могат да бъдат въведени (и по много различни начини), тъй като в програмата p е термин от тип T, обикновено написан като p:T.
  2. Всички програми могат да бъдат предефинирани като поредица от термини от някакъв набор от типове Γt.

Защита 6 — Ние наричаме Γt Контекст на програмата в момент t.

Няма да обясняваме подробно защо тук, но отбелязването, че програмата има контекст и че тя е валидна само за известно време (продължителност), е много важно (подсказка: защото контекстът може да се промени).

Контекстът може също така да има определени характеристики, които могат да бъдат полезни за дефиниране. Например, типовете в контекст могат да споделят термини или не могат да споделят термини в зависимост от квалификаторите и производните, които се използват.

По този начин правим разлика между контексти, в които типовете споделят термини, и контексти, в които типовете не споделят термини.

Защита 7 — Добре типизиран контекст (Γtω) — Типовете в контекста не споделят никакви термини. Това включва липса на всякакви „полиморфни“ типове (напр. видове).

Дефинирани от интерпретатора свойства

Тъй като една програма може да бъде типизирана, можем да видим квалификатора на типа, който програмата е термин, като подмножество от свойствата на тази програма.

Това може да се илюстрира просто: ако имаме квалификатор „всички кратки програми“, тогава всички квалифицирани термини ще бъдат програми, които интерпретаторът счита (субективно) за „кратки“.

Това е свързано с нашата дискусия относно „свойствата като програми“. В тази публикация обсъдихме много по-формална рамка, където програмите са свързани въз основа на споделени последователности. Но тук, в тази публикация, ние също се застъпваме за неофициална методология за генериране на свойства, като позволяваме свойствата да бъдат дефинирани и поддържани от интерпретатор.

Но имайте предвид: „преводачът“ тук може да бъде човек, машинна архитектура, език за програмиране, хардуерно устройство и т.н. Така че, докато свойствата, формално дефинирани, осигуряват споделяем (и следователно по-обективен) начин за обсъждане на програми, това не е непременно „грешно“ да се използва тази субективна рамка от свойства, дефинирани от интерпретатор, и за програми за въвеждане.

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

Разбира се, тези връзки, които са между квалификатор и термин, са производни (т.е. квалификационните преценки/запаметяванията/доказателствата).

Защита 8 — Пълен тип — всички програми pi:T имат *всички* изброени свойства в квалификатора.

Защита 9 — Точен тип — всяка програма pi:T има *само* изброените свойства в квалификатора.

Например, всеки от Типовете в добре въведен контекст Γtω винаги е пълен, но не непременно точен.

Защита 10 — Перфектно типизиран контекст (Γtϕ) — набор от пълни и точни типове. Където списъкът със свойства във всеки квалификатор на тип се покрива напълно от всяка квалифицирана програма и това саединственитесвойства на всяка квалифицирана програма.

Възможните изпълнения (последователностите) на Програмите на Тюринг, обсъдени по-рано( могат да се считат за добре типизирани, но не и идеално типизирани. Няма набор от свойства, които всяка възможна последователност в програма на Тюринг да удовлетворява напълно и точно.

Изводи

Можем да продължим страници и страници с тази дискусия, но тази публикация всъщност не е толкова важна. Това е още една публикация в тази поредица, която предоставя валидност на редукционисткото твърдение, че започването на рамкиране на изкуствените биологични изследвания по отношение на „програми“ и „програмни концепции“ ще бъде плодотворно. И всъщност ще се окаже по-плодотворно от други формализации.

Вече начертахме връзки с фазовите пространства, фазовите преходи и по този начин общата термодинамика в предишен пост за машините.

Начертахме връзки с повечето от компютърните науки и сега с основната математика.

Рамката „всичко е програма“ се оказва мощна. И искаме скоро да започнем да рамкираме действителната биология и теоретичната биология с това, което извличаме в тази серия.

Надяваме се, че можете да започнете да виждате накъде сме се запътили. Но ако не, тогава това също е напълно добре, защото ние ще го посочим възможно най-ясно в този блог и другаде.

Казано просто, бъдещето на биологията и изчисленията са едно и също.