New answers tagged

5

Historically, the linking and sharedness of libraries are orthogonal. Shared libraries reduce the needed memory size. Dynamic linking makes it possible to update and relocate the library code without recompiling the application. Modern systems only have two cases: Static non-shared libraries: When you link with a static library, the entire code is included ...


14

In the Unix world, dynamic libraries first appeared in SunOS, on top of its virtual memory infrastructure (which allows libraries to be shared in memory, and demand-paged). See Shared Libraries in SunOS for details. This was generalised in System V Release 4. Windows has had dynamic linking ever since version 1.0, even though early versions didn’t ship any ...


0

IBM 1401 and Honeywell 200 family machines had 6 data bits, a word mark and an item mark bit per location; both on were a record mark. Most instructions went down in RAM from the units character to a word mark, but others went up, like I/O, and terminated on a word, an item or a record mark. The character could be BCD or unsigned binary. It was a BCDIC ...


1

On Commodore BASIC one neat thing they (Microsoft?) did with the MSB set on the last character of the string/word was that instead of doiing a CMP (6502) to see if the character in the accumulator matched the next character in the string, then checking for a zero result, you'd do an XOR. If you got a zero result then they matched and you could keep on ...


19

To add to the other answers, the func(arg, ...) syntax first developed in C++, and then was incorporated into the ANSI C standard, sometime between 1984 and 1988. My copy of The C Programmers Handbook, AT&T Bell Laboratories, February 1984 is based on K&R 1st edition (published in 1978). It discusses printf and scanf in detail, and states The ...


-3

Back in the early/mid-1970's I worked on IBM/360. For numeric data, the last bit indicated if the number was positive or negative. In hex dumps, the last nibble (a half byte) showed as C or D. Since memory and storage were limited back then. If I knew a number could only be positive, by using Assembler I could use the last bit as part of the number, ...


42

It was a pointer arithmetic hack, later abstracted away into a more portable form in some version of Unix; even later, it was adapted into ANSI C. In many languages (like Pascal for example), variadic functions, if they were included at all, had to be handled as special cases. B, which was the predecessor to C, did not have to, because B did not require ...


11

For the second part of the question - the first standardized support was in ANSI C, which explicitly considered issues of portability and implementability with non-stack calling conventions. This appears to me to be pure invention of the standardization committee, i.e., adding something to the language that did not exist before, but of course there could ...


1

I ran DOS 1.x basic on modern hardware, in Windows 7. You can run it in any directory, but you can't exit command.com without closing the window. The package of BASICA that I did and loaded on Vetusware, all were converted in DOS 5.00 vm, and tested in the DOS sessions of Windows 2000 and Window 7.


4

What kind of intermediate representation did it use? None. At least not any in a way as it's thought of today. Fortran is made to be translated rather straight into Assembly/Machine code, thus the compiler structure is only mildly abstract. It goes mostly like this: Read the source cards Collect all card for a statement Classify statement into ...


2

Looking at the figures given, the GS by itself appears to have 40 million transistors @280 mm². That's a density about double that of the EE. This isn't unusual; CPUs are known to have a fairly low transistor density compared to other more regular chips. But putting an extra 40 million transistors on the EE die, using the same process, would have quadrupled ...


5

The IBM 1401, introduced in 1959, used six-data-bit characters, but stored them internally in 8-bit magnetic core stacks. To the six data-bits were appended a parity-check bit and a "word-mark" bit. The word-mark bit was set only on the low-order character of a string (if memory serves me correctly; if not, it was the high-order one) whether that ...


-4

All of the above answers are good examples of early use and reasons why, but good old Wikipedia shows that the origin is in the .ASCIZ directive of the assembly and macro languages used to run the PDP-10. The PDP-10 was DEC's workhorse computer of the mid-60's and a precursor to many of the systems listed above. Hope this helps!


4

It was a pretty obvious technique. Even obvious techniques have a first use but you couldn't define that moment as 'invention' or 'originating'. That suggests that others got the idea by copying an originator and wouldn't have come up with the same idea, independently and quickly. They would and did. When I first learned to programme in Z80 on a ZX Spectrum, ...


0

Justme’s answer (and commentary with supercat) explains this the best. I’ll just add a couple of notes: With standard CRT TVs, the choice was never between 480i and 480p but between 480i and 240p. 480p would have required doubling up the horizontal scan rate (the electron beam sweep rate from left to right and back) whereas 480i and 240p have approximately ...


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” ...


11

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 ...


17

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 ...


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 ...


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 ...


19

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 "...


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 ...


3

[Erm, I'm not really sure if that question is serious. Or does the OP really believe the crontab implementation used in Unbuntu is the only one there is and ever has been?] Crontab is a data file for cron, a program like any other in unix or unixoide systems, implemented many times and in many ways. At that point it might be important to keep in mind that ...


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 ...


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 ...


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 ...


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 ...


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 ...


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 ...


2

This small example demonstrates a use case for a procedure with unspecified parameters: 1. _BEGIN 2. _INTEGER _ARRAY X[0:10]; 3. _REAL _ARRAY Y[1:20]; 4. _PROCEDURE SUM(A, B, C, D); 5. _BEGIN _INTEGER I; 6. D := 0; 7. _FOR I := B _STEP 1 _UNTIL C _DO D := D + A[I]; 8. _END; 9. _INTEGER I; _REAL R; 10....


2

I want to address the “Has anyone seen this kind of proto-exceptions in any programming language?” part. In 1972, operators named CATCH and THROW were added to Maclisp (I've reformatted the original announcement for convenience): There is a new pair of break-away functions: CATCH, a FSUBR [i.e. a “special operator”, in Common Lisp terminology] which merely ...


1

It should be noted that some implementors of Pascal compilers have, like you, questioned this restriction, and decided to allow alphanumeric labels as a language extension. For example: Turbo Pascal (mentioned on page 48) Compaq Pascal (Section 3.2, noting that this is provided "as an extension".) Free Pascal (Though, because goto is "evil&...


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 ...


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 ...


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 ...


0

My recollection is that the Burroughs implementation of ALGOL-60 short-circuited, since it recast "and" and "or" as syntactic elements rather than as operators embedded inside expressions. In view of the increasingly-hostile tone of SE I regret that I am not investing the time to plough through the manuals.


2

In 1963 or 1964 I saw a copy of the General Radio Experimenter magazine with an article discussing whether a 1 GHz computer was possible. It wasn't optimistic. It was pre-integrated circuits, so Grace Hopper's nanosecond wires (I used to have one) explained the problem, sort of. And while I'm on the subject, I read a science fiction story a few years before ...


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 ...


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 ...


1

Thanks to the answer of @JeremyP, I started to search for "svn mixed revision working copy". There a detail explanation in chapter Version Control the Subversion Way of the svnbook. Mixed-revision working copies As a general principle, Subversion tries to be as flexible as possible. One special kind of flexibility is the ability to have a working ...


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 ...


Top 50 recent answers are included