Hot answers tagged

46

This goes back to early versions of Make, and isn’t specific to GNU’s implementation; as explained by the author of the original Make, Stuart Feldman: Why the tab in column 1? Yacc was new, Lex was brand new. I hadn't tried either, so I figured this would be a good excuse to learn. After getting myself snarled up with my first stab at Lex, I just did ...


45

The 2013 3rd Edition of Programming PHP, by Kevin Tatroe, Peter Maclntyre and Rasmus Lerdorf, might be authoritative here, as Rasmus Lerdorf is the original creator or PHP. Page 2 and 3 show a copy of a 1995 Usenet posting by him with the subject Announce: Personal Home Page Tools (PHP Tools) presenting PHP Version 1.0 to comp.infosystems.www.authoring....


37

Indeed, early devices such as C64, NES, or IBM PC with CGA adapter did not use interlacing, but simply sent 240p to the TV. And later devices such as the Amiga could send either 480i or 240p. But TVs were not 480p capable, only 480i or 240p. So it was not possible to use 480p. For example, Amiga 500 can send either interlaced 480i for hi-res graphics and ...


30

As far as I can tell, the phrase "other crontabs" refers not to other versions of cron, but to the per-user crontabs. The description of the differences certainly fits with the differences between user crontabs and the system crontab. The passage of text itself is not part of the upstream cron source but is part of the Debian packaging of cron. The ...


20

The earliest that was easy to find was ALGOL 68. After further research, it was unlikely to be any form of BASIC. The original Dartmouth BASIC language was initially released in 1964, but had no string variables. Like ALGOL 68, the fourth version of Dartmouth BASIC was released in 1968, but while it was the first version to have string variables, it did not ...


18

Commodore BASIC 2.0 (originally from Microsoft), used in the VIC-20 and Commodore 64, stored its table of BASIC tokens this way too. Instead of true ASCII, these machines used PETSCII, where lower-case "a" was (hex) 41 and upper-case "A" was represented as (hex) C1 (or as (hex) 61). For instance, the token table contained GOSUB as "...


17

[Preface: It's about genuine Pascal history, thus I will answer this based on the original 1970 Pascal Manual. Since then many different implementations have been made, so it might not be true for all variations out there] Why have numeric labels? To start with, one has to keep in mind that Pascal is intended to do away with labels and goto. It is not to ...


16

GNUMake does not only accepts tab, If you don't like tab as prefix, it is editable with the use of the special variable .RECIPEPREFIX See: https://www.gnu.org/software/make/manual/html_node/Special-Variables.html The first character of the value of this variable is used as the character make assumes is introducing a recipe line. If the variable is empty (as ...


16

WordStar As noted here, WordStar set the 8th bit of the last character of each word. This was a key difference between Document mode and Non-Document mode. Non-Document mode also did not automatically wrap lines of text. Both of these features of Non-Document mode were key to using WordStar as a programmer's editor, which was quite common in the late 1970s ...


16

The method was pretty common for small systems that had to do case-insensitive comparisons to user input or, simply, storage, of a lot of short strings (a standard case in BASIC interpreters). Alternatives to mark the string end (like a length byte or a trailing zero or "$") would waste a byte per token - With BASIC tokens in the hundreds, some ...


15

TL;DR: It's not about what a console can deliver as it is what a TV can display. Classic (pre digital) TV sets could only receive and display interlaced frames. So no sense in producing a non interlaced one. Similar console developers would have been unwise to create consoles and content that could not be displayed on what Joe Aerage had as TV. Sales might ...


13

This practice became widespread with small 8bit systems, which had a very limited ROM space. It has some advantages: It saves one byte per string. Easy detection of string end, just with "AND 80h" or such instruction It is OK for 7bit ASCII code (00h - 7Fh) So it became a de-facto standard. Later, when characters with diacritics (or semigraphics ...


13

From https://president.yale.edu/biography-grace-murray-hopper: Under the guidance of Howard Aiken, who had developed the MARK I, Hopper and her colleagues worked on top-secret calculations essential to the war effort—computing rocket trajectories, creating range tables for new anti-aircraft guns, and calibrating minesweepers. One of the first three “coders” ...


12

Pascal can be parsed without using a table of user symbols. If general symbols were allowed as labels, a compiler that encounters a user identifier when a statement is expected would have no way of knowing in advance whether it was a statement label without having to refer to a symbol table. As for the way forward declarations work, it simplifies the ...


10

This practice goes back to at least 1976 with an architecture developed for CADO systems (a small multi-user minicomputer system). The language CADOL stored all strings with the high bit on the last character as a terminator. The language had special instructions for removing the bit (SPOOL), setting the bit (PACK), and traversing a buffer full of ...


9

Tones as means of user interface were invented in 1908: Invented by engineer August Kruckow, the dial tone was first used in 1908 in Hildesheim, Germany Note that in Europe, call progress tones are single-frequency, and ringing and busy tones are effectively series of beeps of different duration. While Wikipedia does not give an exact date for the ...


8

One important historic reason is that many old computer architectures didn't have the concept of filename extensions. For example the Tandem computers I worked with in the late 1990s had for their entire file system just the following: computer/drive/directory/filename That was it, no subdirectories, no filename extensions, and every name limited to 8 ...


8

It's not. The price you pay is that it basically makes all parsing optimizations that rely on a fixed relationship of byte offset to character position unusable. Okay, but what parsing optimisations do? “Character” is a meaningless concept for almost every syntax you might want to parse. If you use bytes, so long as your special characters (e.g. ={}()[];) ...


7

This is not an answer as I don't know the real reason. It is just a comment about parsing label: In pascal varname: is expected to be followed by either = or a variable type. If a statement were added, then parsing would be a lot more complicated. If, however, you get number: it is relatively unique. If it is followed by anything else other than a ...


7

No. As an American, which I'm guessing you are, you probably operated in an ASCII bubble. As a Western European, which you might be, you at least had some not-quite-ASCII variant of a 7-bit character code, or maybe some 8-bit ISO code, that preserved the character/byte equivalence at the cost of having to associate an encoding with the text and/or some ...


6

In subversion, a revision refers to a snapshot in time of the whole directory tree. You can have a mixed revision working copy, but the whole version number thing is fundamentally different to CVS. The location(s) of .svn is of no importance in this discussion, it is just an implementation detail. When the working copy format was being decided, it was ...


6

Why do some people say PHP was “Pretty Home Page”? You've compiled a list, but unfortunately you didn't share why the mentioned people said so. In my past, no person known to me ever used that wording, and if so, I would have asked for more. One person I remotely learned about recently, Raffzahn, has already shared that this was from memory (and you know ...


6

A quick Google search for PHP returns the Wikipedia entry in the top results, where it states, "PHP originally stood for Personal Home Page", citing the php.net history page as its source: PHP as it's known today is actually the successor to a product named PHP/FI. Created in 1994 by Rasmus Lerdorf, the very first incarnation of PHP was a simple ...


6

Ultimately, there is no air-tight justification for any design choice in a computing language, because alternative designs can easily be defined. The rationale for make is that Makefiles are parsed using an ad hoc line-oriented algorithm which classifies whether a line is a rule body or not based on the leading tab. You can literally implement a parser for ...


5

I'll express a somewhat dissenting opinion to the rest of the provided until now answers: yes, UTF-8 (or, rather, more generally Unicode at large) is partially and indirectly responsible for the bloat in the required CPU resources. But its contribution is just a drop in the ocean, small enough for most people to say "no, it isn't". Rather, it's the ...


5

CRT TVs were designed to handle interlaced signals, where the TV alternates by receiving odd scanlines and even scanlines on alternating frames. The so-called progressive mode was invented when some hardware designer noticed you could start the even and odd frames on the same scanline, so the CRT's electron gun overwrites the previous frame's lines instead ...


5

To be exact: "Interlacing" is not just a method for bandwidth saving, but mainly for increasing vertical resolution. EDIT: Bandwidth saving and increasing resolution are just the different sides of the same coin, see a comment by Justme. E.g.: The TV screen (in Europe / 50 Hz) was divided into 625 lines. The first picture frame contains the odd ...


4

A beep is a fixed frequency signal generated by one of the most simple electronics possible. It predates for sure any more complex electronic sound. So the answer may be: It was used as soon as electronic generation was deemed more appropriate than using a physical bell. As such any reasoning is quite independent of computer usage, much like Leo's example ...


4

Two reasons come to mind: The image was sent to the display (the TV) using an RF modulator. This essentially acts as a low power TV station. Since the TV expects broadcast channels to be interlaced, the signal sent from the RF modulator must be interlaced as well. You alluded to this in your question: Reduced bandwidth. By only displaying every other ...


4

Some say UTF-8 was the best solution. No. Not really (*1). Of course it may have influence on some low level operations, but they are marginally. In addition, they are the very same as with any other multi byte character encoding. Not to mention that there is an essential classic version of this: Escape Codes :)) The price you pay is that it basically ...


Only top voted, non community-wiki answers of a minimum length are eligible