Wikipedia:Reference desk/Archives/Computing/2017 September 24

Computing desk
< September 23 << Aug | September | Oct >> September 25 >
Welcome to the Wikipedia Computing Reference Desk Archives
The page you are currently viewing is an archive page. While you can leave answers for any questions shown below, please ask new questions on one of the current reference desk pages.


September 24 edit

"open source programming language"? edit

I see the term "open source programming language" used every so often (a few times in Wikipedia articles). Is this a standard term? It seems silly to me- I think what it means is that there is an "official" compiler or interpreter which is open source. Surely the language itself is an abstraction and therefore has no "source". I guess it could mean that there is some official language specification or standards document, and that document itself has some sort of copyleft license, but I don't think that's what they mean. See Go (programming language), with a reference to Google saying the same thing. Staecker (talk) 00:10, 24 September 2017 (UTC)[reply]

I believe some really do provide the source code for the language directly, which then allows programmers with the ability to rewrite it and add to it, to create their own extensions. For example, if it has a square root function that can't handle negatives, it could be rewritten to provide imaginary numbers in this case. StuRat (talk) 01:47, 24 September 2017 (UTC)[reply]
It sounds like you're talking about modifying or extending the compiler. But I don't think there is such thing as "the source code for the language", right? Staecker (talk) 11:12, 24 September 2017 (UTC)[reply]
There is a piece of source code, in some language (often C), that performs functions like square roots. The linker links to those functions now, but you can override that and call a different function, with your own code. StuRat (talk) 15:45, 24 September 2017 (UTC)[reply]
Right- but that piece of code is not "the language", it is a part of some library or whatever. Staecker (talk) 20:02, 24 September 2017 (UTC)[reply]
I would argue that the functions are an integral part of any language. StuRat (talk) 20:39, 24 September 2017 (UTC)[reply]
For many languages, the standard tools are available as a free-software or open-source reference implementation. That means that a compiler, any system library, and any runtime environment (if required) exist and you may read, modify, and share the implementation details.
For some languages, additional information such as a formal grammar and/or a language specification may exist, and may be provided as free software or freely-licensed documentation.
Consider the Java programming language: it was commercially-developed, but you do not need to pay anyone to get or use its tools or its documentation; it is free in cost and in licensure. (For certain commercial purposes, you can choose to pay for a non-free licensed version, if that makes more sense for your business).
So - the Java language is (mostly) free and open source software. You can write new programs in the Java language, and your program might be open- or closed- source, depending on how you choose to distribute it.
Contrast this to a language like VAL3 or MATLAB. For both languages in this example, the language itself, including its documentation and its standard implementation, are not free. The specification for the language is copyrighted; it costs money to get it; it costs money to use it; and the license restricts certain use (sharing, modifying, re-selling). Although you can find some free documentation and some free software associated with these languages, the standard version of each language is controlled by one commercial vendor whose license terms reflect a business-desire to restrict certain types of sharing. They want to keep certain implementation-details private, so they do not share source code; they want to sell software-products, so they do not share tools at zero-cost. Even if you write software in those languages and give your software away for free (at zero cost, or under a free license), other programmers and users will probably still need to buy commercial tools from the vendor if they want to use your stuff.
In this example, compare GNU Octave - a free-software tool that tries to be compatible with the MATLAB programming language - but if you read the fine print, "octave" is a different programming language that is "somewhat compatible" with software written in the MATLAB language. The Octave developers can not call themselves a "free implementation" of MATLAB for many reasons: the MATLAB language and brand-name is protected by copyright, trademark, and software licensing. It is not sufficient to say that Octave is a clean-room implementation. It is not sufficient to say that Octave is a "non-standard" or "unofficial" implementation. The protected intellectual property is not just the version of software sold by Mathworks - they actually own the rights to the language, its documentation, its specification, and its implementation. This is something that has been battled in court; but here's at least one example indicating legal precedent: National Instruments Inc. v. The MathWorks, Inc. (rather, pertaining to Simulink as a programming language system - try explaining that subtlety to an attorney!)
On the other hand, you can read about Dalvik (software) and the decade-long, billions-of-dollars- court battle it created. Google implemented a language that was substantially similar to the Java language - and even called it the Java language - but they claimed that their clean-room implementation circumvented any duty to pay a license for copyright-protected use of the language. Google actually won their case using an argument based on that legal theory, to the surprise of many experts.
Free software is great - there are many good reasons to use it - but non-free software sometimes provides enough advantage that it's worth the trade-off.
Nimur (talk) 05:06, 24 September 2017 (UTC)[reply]
Thanks for the response. It still seems to me that it's the compiler and libraries and documentation which are open source, rather than the language itself. I don't know what it would mean for the language itself to be open source. But I'm not here to argue whether this way of speaking is sensible or not- I just wanted to know if it was standard usage. I guess it is? This is like when a student asks me: "Can I get Java on my computer for free"? I pedantically say, "Java is a language, so you don't 'get' Java on your computer. You get a Java compiler, and yes, you can get it for free." Staecker (talk) 11:12, 24 September 2017 (UTC)[reply]
You are correct; a "language" is distinct from software that implements that language, and both are distinct from software that use that language. Each of these categories represent something distinct; and each use-case might be subject to different terms of use.
So, we should not say a "language" is open-source; we would be perpetuating a far-too-common abuse of terminology. Only source code can be "open-source." Other things can be "freely licensed," "unencumbered by patent protection," and so on. A language specification could be "freely licensed," and an implementation of that specification could be provided by "free and open source software." A company might write an application using this language, and may provide their application "at no cost."
However, in common usage, many people conflate "open source" to mean all of those other words. Only a small number of very pedantic people and lawyers seem to use the words correctly.
A famous and influential essay: Why Open Source misses the point of Free Software - actually helps make clear that source-code availability is only a small part of free license as it pertains to software. Nimur (talk) 15:26, 24 September 2017 (UTC)[reply]
I think this whole issue is compounded when the name of the language is also the name of the standard compiler or interpreter. I think this is the case with Perl, Python, probably lots of others. Staecker (talk) 20:02, 24 September 2017 (UTC)[reply]

Font from an image edit

Hello, I was working on a project and came across this image - https://imgur.com/a/Vin89. Can someone help me identify which font is being used in the image? I would be really grateful. Thanks! 180.151.239.29 (talk) 11:14, 24 September 2017 (UTC)[reply]

There are plenty of free online tools to assist with this, such as Font Squirrel and What The Font. RegistryKey(RegEdit) 11:45, 24 September 2017 (UTC)[reply]

"Find and replace" issue... edit

I have a Word (well, actually LibreOffice...) question. I'd like to copy-paste the source material at User:Soman/sandbox into a text document and use 'find and replace' to replace the current

|- | ZXC Vajpayee, Atal Bihari WWW [[Atal Bihari Vajpayee|Vajpayee, Atal Bihari]] | [[Bharatiya Janata Party]] | [[ Lucknow (Lok Sabha constituency)| Lucknow ]] | [[Uttar Pradesh|UP]] | | QQQ | | QQQ | QQQ | QQQ | QQQ | | | QQQ | QQQ | QQQ | QQQ | QQQ | | | 10 |

with

|- |ZXCVajpayee, Atal BihariWWW[[Atal Bihari Vajpayee|Vajpayee, Atal Bihari]] |[[Bharatiya Janata Party]] |[[Lucknow (Lok Sabha constituency)|Lucknow]] |[[Uttar Pradesh|UP]] | |QQQ | |QQQ |QQQ |QQQ |QQQ | | |QQQ |QQQ |QQQ |QQQ |QQQ | | |10 |

but I can't use 'find and replace' on the tab spaces. Any idea on how to resolve this? --Soman (talk) 16:00, 24 September 2017 (UTC)[reply]

Open the text file in a Hexadecimal editor such as Hexplorer. It has a Find and Replace function that works at byte level. Blooteuth (talk) 16:10, 24 September 2017 (UTC)[reply]
It worked, many thanks! --Soman (talk) 17:34, 24 September 2017 (UTC)[reply]
One caution there is that other bits, like in a pic, could happen to match the string you are replacing. However, with a string this long, that's extremely unlikely. StuRat (talk) 17:04, 24 September 2017 (UTC)[reply]

The Absolute Minimum Every Software Developer Absolutely Must Know edit

Joel on software has an interesting article named The Absolute Minimum Every Software Developer Absolutely Positively Must Know about Unicode and Character Sets (No Excuses).

I want to know what are more of those common basic things that software developers (or people serious with computing) must know. I'd like to find basic literature explaining basic concepts like bits, bytes, unicode, RAM, peripherals, basic computer architecture, and really basic stuff like these. Something that would be a good reading for teenagers or older interested in computers.

Maybe a collection of articles (but not wiki articles, I want something with a higher publishing standards) would do.--Hofhof (talk) 22:47, 24 September 2017 (UTC)[reply]

You seem to have skipped over some even more basic things, like data types, assignment statements, conditional statements (if-then-else, case, etc.), loops, functions and subroutines, compiling and linking, etc. StuRat (talk) 02:09, 25 September 2017 (UTC)[reply]
How to Google. (((The Quixotic Potato))) (talk) 07:13, 25 September 2017 (UTC)[reply]
You could pick some CompTIA exam preparation study guide. Some `IT Fundamentals` certification would be fine for your purpose. They are targeted at people who want to become technicians, but I suppose this is a more thorough approach than basic computer literacy material targeted at school kids. B8-tome (talk) 11:14, 25 September 2017 (UTC)[reply]
  • Design Patterns would be one. Although WP, with its inimitable sense of timing, has just tagged that as "not notable". Best read it soon before it gets deleted. Andy Dingley (talk) 16:00, 25 September 2017 (UTC)[reply]
The minimum you need to know is based on what you plan to do. It would be nice if every programmer knew absolutely everything in Computer Science. That is not realistic. In my opinion, a great team consists of a handful of people who can program reasonably well and one or two people who really know all the details. My personal job is to sit in on code reviews and suggest improvements. That means that the coders don't need to know the details. They come up with a solution and I either tell them it is great or I explain how it can be improved. I am sometimes surprised. For example, I was in a review last week and I asked if they understood that the data set would be loaded as a two-dimensional vector of doubles. One of the women in the group immediately said that she already went through the code to ensure that they never test for equality with the floating point values. I didn't ask that, but she understood where I was going while the rest of the team was still double-checking to verify my claim that all of the incoming data was being stored as doubles - even the data that was originally an integer. 209.149.113.5 (talk) 14:32, 26 September 2017 (UTC)[reply]
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold is a book I recommend to anyone who isn't already a CS expert. - ☆ Bri (talk) 18:03, 26 September 2017 (UTC)[reply]