هل فوجئت يومًا بأن نظام التشغيل لهاتفك أو حاسوبك لا يقبل التحديث لأن الشركة المُنتجة قد أوقفت دعم إصدارٍ ما زال يعمل، لكي تحث عملائها على شراء إصدار جديد أكثر كفاءة وأشد جذبًا وإشباعًا لحاجات المستخدمين؟ وهل تساءلت يومًا عن طبيعة العلاقة التي تربط بينك وبين هاتفك أو حاسوبك أو أي جهازٍ إلكتروني آخر تمتلكه، هل هي علاقة عاطفية قوامها المظهر والتباهي أم علاقة عقلانية قوامها الحاجة ونمط الاستخدام؟ وهل فكرت يومًا في كيفية عمل هاتفك أو حاسوبك، وما الذي يحدث (...) حين تقوم بالضغط على أيقونة أحد البرامج، أو ما هي التفاصيل الفنية الدقيقة التي تتوارى خلف تلك الواجهات الرسومية التي تتعامل معها؟ هذا ما يُناقشه كاتب الخيال الأمريكي «نيل ستيفنسون» (من مواليد سنة 1959) في مقالٍ له تحت عنوان «في البدء كان سطر الأوامر»، نًشر أولاً على أحد المواقع الإلكترونية سنة 1999، ثم أتيح ككتاب في السنة ذاتها، وفيه يُقدم عرضًا تاريخيًا لمجموعة من أنظمة التشغيل، لاسيما تلك التي أنتجتها الشركتان المهيمنتان: «مايكروسوفت» و«آبل»، بالإضافة إلى البدائل المعروفة مثل «لينكس» و«بي أو إس». كما يسعى في المقال ذاته إلى تفسير سبب عدم احتمال بقاء أنظمة التشغيل الاحتكارية مُربحة في المستقبل في معية المنافسة الشرسة، ويُحلل الثقافة الجمعية للشركات الكبرى العاملة في مجال البرمجيات الحرة. (shrink)
The van Wijngaarden grammars are two-level grammars that present many interesting properties. In the present article I elaborate on six of these properties, to wit, (i) their being constituted by two grammars, (ii) their ability to generate (possibly infinitely many) strict languages and their own metalanguage, (iii) their context-sensitivity, (iv) their high descriptive power, (v) their productivity, or the ability to generate an infinite number of production rules, and (vi) their equivalence with the unrestricted, or Type-0, Chomsky grammars.
Expressiveness and decidability are two core aspects of programming languages that should be thoroughly known by those who use them; this includes knowledge of their metalanguages a.k.a. formal grammars. The van Wijngaarden grammars (WGs) are capable of generating all the languages in the Chomsky hierarchy and beyond; this makes them a relevant tool in the design of (more) expressive programming languages. But this expressiveness comes at a very high cost: The syntax of WGs is extremely complex and the decision problem (...) for the generated languages is generally unsolvable. With this in mind, I provide here a short primer of the syntax of WGs, which includes syntactic restrictions that guarantee decidability for the corresponding generated languages. (shrink)
The composition of a timeline depends on purpose, perspective, and scale – and of the very understanding of the word, the phenomenon referred to, and whether the focus is the idea or concept, an instance of an idea or a phenomenon, a process, or an event and so forth. The main function of timelines is to provide an overview over a long history, it is a kind of a mnemotechnic device or a particular kind of Knowledge Organization System (KOS).b The (...) entries in the timeline should be brief and indisputable. Therefore, timelines often identify the first occurrences rather than the most widespread or most qualified instances leaving the fuller and more complex, and possibly disputable story out. But even first occurrences are often difficult to establish. The first occurrence is most often only the first finding of an instance. Older instances may be found and competing definitions develop either within a field or in different fields. This is further complicated since the phenomena, their names, and their meanings may change over time. Former meanings may become redundant, or they must accommodate and coexist with new meanings. The time and place of the composition of the timeline are to be considered in interpreting the things listed. The following note will discuss these issues as they occur in the development of the notions of text, e-text and hypertext, and the origin of machine translation. (shrink)
The Curry-Howard isomorphism is a proof-theoretic result that establishes a connection between derivations in natural deduction and terms in typed lambda calculus. It is an important proof-theoretic result, but also underlies the development of type systems for programming languages. This fact suggests a potential importance of the result for a philosophy of code.
Cloud computing has provided many opportunities to businesses and individuals. It enables global and on demand network access to a shared pool of resources with minimal management effort. However, this bliss has become a problem for latency-sensitive applications. To improve efficiency of cloud and to reduce the amount of data that needs to be transported to the cloud for data processing, analysis and storage, a new network architect technology 'Fog Computing' has been introduced. In fog computing, small applications and resources (...) are processed at the edge of the cloud, rather than processing entire applications on the cloud. (shrink)
This article asks what is creative about the act of programming. Observing that in most programming contexts, each line of code is written with a specific end in mind, it would seem as though there is little room for creativity, as the ends constrain the choices of means. However, there are many features of coding languages that open up creative possibilities. Object-oriented coding environments purport to make programming more about structures that humans might work with and less about features of (...) computers, and other innovative coding techniques, such as RTTI design, suggest that there may be no limit to the creative possibilities of code. (shrink)
We investigate common design decisions for constructing a computational genetic language in an autoadaptive system. Such languages must support self-repl ication and are typically Turing-complete so as not to limit the types of computations they can perform. We examine the importance of using templates to denote locations in the genome, the methods by which those templates are located (direct-matching versus complement-matching), methods used in the calculation of genome length and the size and complexity of the language. For each test, we (...) examine the effects on the rate of evolution of the populations and isolate those factors that contribute to it, most notably the organisms’ ability to withstand mutations. (shrink)