Бір рет жаз, кез келген платформада компиляциялау философиясы
Write once, compile anywhere
Жазып бір, кез келген жерде жинақтайтын (WOCA) қағидасы – кодты өзгертусіз әртүрлі платформада жүргізуге мүмкіндік береді. C++, Go, Ada тілдері сияқты көптеген бағдарламалау тілдері қолданады.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Бір рет жазыңыз, кез келген жерде компиляциялаңыз (WOCA) – компилятор мен оған қоса берілген бағдарламалық кітапханалардың немесе бағдарламалық кітапхана/бағдарламалық құралдардың қолданатын философиясы. Ол кез келген платформада бастапқы кодын өзгертпестен компиляцияланатын компьютерлік бағдарламаны жазу мүмкіндігін білдіреді. Sun компаниясының "бір рет жазыңыз, кез келген жерде орындаңыз" деген ұранынан айырмашылығы, платформааралық үйлесімділік тек бастапқы код деңгейінде ғана іске асырылады, компиляцияланған екілік код деңгейінде емес.
Write once, compile anywhere (WOCA) is a philosophy taken by a compiler and its associated software libraries or by a software library/software framework which refers to a capability of writing a computer program that can be compiled on all platforms without the need to modify its source code. As opposed to Sun's write once, run anywhere slogan, cross platform compatibility is implemented only at the source code level, rather than also at the compiled binary code level.
Кіріспе
WOCA философиясын ұстанатын көптеген тілдер бар, мысалы C++, Pascal (Free Pascal қараңыз), Ada, Cobol немесе C, егер олар стандартты кітапханадан басқа функцияларды қолданбаса. Go сияқты тілдер одан да әрі барып, жүйеге қатысты ешқандай нәрсе қолданбайды, ол жай ғана жұмыс істеуі керек, ал жүйеге қатысты элементтер үшін платформаға арналған файлдар жүйесі қолданылады. Компьютерлік бағдарлама платформааралық кітапханаларды да пайдалана алады, олар әртүрлі платформалар арасындағы айырмашылықтарды жасыратын абстракция қабатын ұсынады, мысалы сокеттер мен GUI, жазба кодтың тасымалдануын қамтамасыз етеді. Бұған мысал ретінде Qt (C++) немесе Lazarus (Pascal) IDE-нің LCL және сәйкес виджеттері келтіріледі. Бүгінде бізде өте қуатты үстел компьютерлері де, телефондардағы компьютерлер де бар, олар көбінесе мәтін өңдеу, деректер базасын басқару және электрондық кестелер сияқты күрделі қосымшалармен жабдықталған. Бұл бағдарламалау тәжірибесі жоқ адамдарға өз деректерін сұрыптап, іздеп алып, өңдеуге, сондай-ақ ұйымдастырылған ақпаратын көрсететін (мысалы, PDF файлдары) құжаттар жасауға немесе оларды басып шығаруға мүмкіндік береді. 2000 жылға дейін мұның кейбіреулері қол жетімді болмады, ал 1980 жылға дейін олардың көпшілігі болмады. Компьютерлік автоматтандыру 1960 жылдардың басында пайда болғаннан бері, егер сізде деректерден есеп алу немесе шот-фактураларды, жалақы тізімдерін, сатып алу тапсырыстарын және басқа да бизнес, мектептер мен үкіметтер жасайтын құжаттарды басып шығару қажет болса, оларды физикалық теріс машинада, мүмкін алдын ала басылған нысандарды пайдалана отырып, жазуға тура келді. Егер сізде компьютерде сақталған ақпарат болса және оны сұрыптап, өңдеп немесе басып шығару қажет болса, біреуге бағдарлама жазу қажет еді. Кейде адамға кәсіби бағдарламашылардың түсіне алмайтын немесе орындауға уақытты қажет ететін немесе оларды пайдаланатын бағдарламашылардың болмауы себепті, қажетті бағдарламаны жасау мүмкін болмады, сондықтан бағдарламалау білімі жоқ мамандар өздеріне қажетті ақпаратты өңдеу және басып шығару үшін бағдарламалау дағдыларын үйренуге мәжбүр болды. Жұмысты кәсіби бағдарламашы жасаса да, немесе өзіне ақпарат алу үшін бағдарлама жазған пайдаланушы жасаса да, оны жасау құралдары бірдей. Бағдарламаны жазып, компиляторға (басқа бағдарлама) жіберіңіз, ол компьютер түсінетін нұсқауларға айналдырады, қателерді түзетіп, бағдарлама жұмыс істейінше қайталаңыз. Бұл мәселенің бір бөлігін шешуге көмектессе де, жаңа мәселені тудырды. Бағдарлама жазған немесе жазу үшін біреуді жалдаған адамдар (программалық қамтамасыз етуді сатып алу 1970 немесе 1980 жылдары ғана мүмкін болды) жұмыс берушілері немесе мектептері жаңа компьютер сатып алғанда олардың бағдарламалары жұмыс істемейтінін байқады.
There are many languages that follow the WOCA philosophy, such as C++, Pascal (see Free Pascal), Ada, Cobol, or C, on condition that they don't use functions beyond those provided by the standard library. Languages like Go go even further in as far that no system specific things are used, it should just work, and for system specific elements a system of platform specific files is used. A computer program may also use cross platform libraries, which provide an abstraction layer hiding the differences between various platforms, for things like sockets and GUI, ensuring the portability of the written source code. This is, for example, supported by Qt (C++) or the Lazarus (Pascal) IDE via its LCL and corresponding widgetsets. Today, we have very powerful desktop computers as well as computers in our phones, which often have sophisticated applications such as word processing, Database management, and spreadsheets, that can allow people with no programming experience to, sort, extract, and manipulate their data. and create documents (such as PDF files) showing their now organized information, or printing it out. Before 2000, some of these were not available, and prior to 1980, almost none of them were. From the start of computer automation in the early 1960s, if you wanted a report from data you had, or needed to print up invoices, payroll checks, purchase orders, and other paperwork businesses, schools and governments generated, you typed them up on a physical typewriter, possibly using pre printed forms. Otherwise, if you did have information stored in a computer, and wanted it sorted, manipulated, or printed, it required someone to write a program to do so. In some cases, the person needed information that professional programmers either could not understand how to provide a program to do what they wanted; the available programmers could not produce something in a reasonable amount of time; or there weren't any programmers they could use, caused some non programming professionals to learn some programming skills, at least to know how to manipulate and print out information they needed from their data. Whether the work was done by a professional programmer, or an end user writing a program to provide them information for their own use, the means to do this in either case is the same. Write a program, submit it to a compiler (another program that converts written programs into instructions the computer can understand), fix any errors, then repeat until the program worked. While this helped fix part of the problem, it created a new one. People who wrote programs, or hired someone to write them (purchasing software was not a thing until the 1970s or 1980s), discovered when their employer or school bought a new computer, their programs no longer worked.
Стандарттау
1960 жылдардың соңы мен 1970 жылдардың басында кез келген өндірушінің компиляторларын қолдана отырып, машинаға тәуелсіз бағдарламаларды қалай жазуға болатынын анықтау үшін стандарттар мен талаптар жасауға күш-жігер жұмсалды. Халықаралық стандарттар ұйымы (ISO), ANSI және басқа да стандарттау ұйымдары, үкіметтер, қаржы институттары, өндірушілер сияқты компьютерлер мен бағдарламалық жасақтаманың ірі қолданушыларымен, сондай-ақ компьютер өндірушілерімен бірлесіп, әрбір нақты тілдің қалай жүзеге асырылуын сипаттайтын стандартталған талаптарды жасады. Компьютер өндірушілері бағдарламалау тіліне өзіндік кеңейтімдер енгізе алатын болды, бірақ егер олар стандартқа сәйкес екенін мәлімдегісі келсе, анықтамалық нұсқаулықта осы айырмашылықтарды көрсететін болды. Осылайша, стандартқа сәйкес жазылған бағдарлама олардың машинасына компиляцияланып, жұмыс істейтін болса, басқа өндірушінің компьютерінде де, егер оның компиляторы да стандартты сақтаса, өзгеріссіз жұмыс істейтін еді. Стандарттың талаптарын әскери, мемлекеттік және өндіріс компаниялары сияқты ірі бағдарламалық жасақтама сатып алушылар қатаң сақтады, егер жеткізуші қолданатын бағдарламалау тілдері үшін стандартқа сәйкес келмейтін компиляторды ғана ұсынса, онда олар мұндай компьютерлік жабдықты сатып алудан бас тартатын.
Starting in the late 1960s and early 1970s, efforts came into play to create standards and specifications of how machine independent programs could be written using compilers from any vendor. Standards making organizations, like the International Standards Organization (ISO), and ANSI, among others, in cooperation with large users of computers and software (like governments, financial institutions and manufacturers), and computer manufacturers, to create standardized specifications to provide a description of how each specific language should be implemented. Computer manufacturers could still have their own proprietary extensions to a programming language, but if they wanted to be able to claim compliance with the standard, they had to specify the differences in the reference manual, so that a program written according to the standard able to compile and operate on their machine would also operate, without further change, on a different manufacturer's computer whose compiler also followed the standard. The requirements of the standard were enforced by large software buyers, such as military, government, and manufacturing companies, by refusing to buy such computing equipment if the vendor only offered a compiler for the programming languages they used which wasn't compliant with the standard,
Нәтижелер
Қазіргі уақытта, Ada, APL, BASIC, C++, COBOL, ECMAScript (JavaScript-тің жалпы атауы), Forth, FORTRAN, Pascal, PL/I, Ruby және SQL сияқты бағдарламалардың қалай жазылуы керектігін анықтайтын стандарттары бар оннан астам бағдарламалау тілі бар. Олардың көптегені әлі де қолданыста, кейбір жағдайларда клиенттер өздерінің бастапқы кодын басқа өндірушінің компьютеріне көшіріп, тілдердің стандарты сақталғандықтан, оны өзгеріссіз қайта құрастыра алғандықтан. Стандарттар көмектессе де, WOCA философиясы компилятор жасаушылары стандартты мұқият сақтаған жағдайда ғана тиімді болады.
Currently, there are more than a dozen programming languages that have standards describing how programs in the language are supposed to be written, including Ada, APL, BASIC, C++, COBOL, ECMAScript (the generic name for JavaScript), Forth, FORTRAN, Pascal, PL/I, Ruby and SQL. Many of these are still in use, in some cases, because customers were able to take their source code to a different manufacturer's computer, where it was recompiled, often without change, because of the standardization of programming languages. While the standards helped, the WOCA philosophy works only when the makers of compilers ensure that they follow the standard.