As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
why do people create a standard(or specification) for every language soon after its developed?
C++
In 1998, the C++ standards committee (the ISO/IEC JTC1/SC22/WG21
working group) standardized C++ and published the international
standard ISO/IEC 14882:1998 (informally known as C++98).
Java
In 1997, Sun Microsystems approached the ISO/IEC JTC1 standards body
and later the Ecma International to formalize Java, but it soon
withdrew from the process.
JavaScript
In November 1996, Netscape announced that it had submitted JavaScript
to Ecma International for consideration as an industry standard, and
subsequent work resulted in the standardized version named ECMAScript.
and the list goes on.
Primarily to assure that different implementations agree on what actually constitutes the language, and therefore what they accept and reject in programs written in that language.
This is largely driven by the fact that early on, many languages (e.g., Lisp) were not standardized, which led to fragmentation and incompatibility.
Standards are developed so that companies and individuals that want to implement or build compilers or use the languages, know what the expected behaviors are of language and ensure they are consistent across implementations.
For the simple fact that (as happened with Java) each company will each go off in a different direction with the language. Standards create a minimum specification for the language that all compilers following the standard should adhere to.
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I prefer Haskell.
I already know How to create my own language with Procedural Language (for example: C, Java, Python, etc).
But, I know How to create my own language with Functional Language (for example Haskell, Clojure and Scala).
I've already read:
Internet Resources
Write Yourself a Scheme in 48 Hours
Real World Haskell - Chapter 16.Using Persec
Writing A Lisp Interpreter In Haskell
Parsec, a fast combinator parser
Implementing functional languages: a tutorial
Books
Introduction Functional Programming Using Haskell 2nd Edition -- Haskell
StackOverflow (but with procedural language)
Learning to write a compiler
create my own programming language
Source
Libraries and tools/HJS -- Haskell
Are there any other good links/sources? I would like to get some more.
Programming Languages: Application and Interpretation is frequently used in programming language classes, and is available online for free. It uses Scheme.
Types and Programming Languages is another incredible book dealing with type systems (including implementation), though only available in dead tree format. It uses ML (which represents a significant family of functional languages that I noticed was missing from your list).
Racket (formerly called PLT Scheme) is a functional language that emphasizes making your own sub-language.
read also:
Christian Queinnec's Lisp In Small Pieces book,
Andrew Appel's Compile with Continuations (and also his book Modern compiler implementation in ML isbn:0521582741)
I also think that Jacques Pitrat's latest book Artificial Beings - the conscience of a conscious machine will give you very interesting insights.
Take also a look at Compiler.HOOPL and Control.Unification libraries, and uuagc attribute grammar preprocessor. You also can read https://wiki.ittc.ku.edu/lambda/images/e/e3/Modular-interpreters.pdf on writing modular interpreters in Haskell. Also note that Parsec is not very fast and for non-toy projects Happy/Alex may be suited better.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
As a language how stable is Groovy? Do any big names use it?
I've been using Groovy for about 2 years and yes, it is stable. So far, I haven't faced any bugs in the language itself. The creators of the language release often. There is great tool support and there are many mature libraries and frameworks based on it. Take for example Grails, a Rails-like framework. If you go to its page, you will see that a lot of BIG names, such as LinkedIn, Netflix and Atlassian are using it. I myself am using Groovy in many projects with Ericsson, which is a BIG name too.
As for "big names", there may be some (you shouldn't care). Obviously, nevertheless, Groovy's got a basic problem with its poor performance compared to Java. Positively, it's doubtable that Groovy is used in any mission-critical projects where scalability counts.
Regarding stability (as in the "absence of bugs"), take a look at the Groovy issue tracker. Enjoy ROFL'ing at several bugs where Groovy (again and again) has stumbled upon its own "magic". - Groovy bugs are numerous, and often unresolved for years.
Regarding stability again (as in "backwards compatibility"), I'm too new to Groovy to say much about that. Nevertheless, the closures syntax had changed without a compatibility layer provided. (This would never ever happen in the Java language.)
- When looking at those points from a Java perspective, Groovy is a kindergarten. From a Scala perspective even, Groovy will never grow up.
- Which is not to say that Groovy had no clear advantages in other scopes (like, there is Grails). But you've asked about these.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
PL/I is a very old language but seemingly haven't got much publicity and appreciation as Fortran for scientific computing. Why is that? A search on the web does show that there are many PL/I codes for scientific computing. There is among others a scientific computing library which was developed by IBM in PL/I.
But I haven't found any free compilers for Windows for PL/I. Is it due to this lack of free compilers that PL/I didn't attract the scientific community?
Thanks a lot...
I worked with people at IBM who built the PL/I optimizing compilers and PL/I checkout compilers. I enjoyed using PL/I, but it was a classic example of a "second-system effect": very complicated and clunky, although powerful. Imagine a closed-source version of Perl and you won't be too far off. And the key there is closed source. Languages take years to take hold, and by the time PL/I was stable in the mid-1970s, computation was already shifting away from mainframes toward minicomputers. Then in the late 1980s the microcomputers took over. The PL/I compilers were not designed to be portable—they were started right after the IBM 360, which was going to be the last computer anyone ever needed—and there was no way IBM was going to catch up with much simpler, more easily ported languages on the new platforms. (Not that I can imagine IBM trying to come up with a port of PL/I to the PDP-11.)
In short,
Nobody other than IBM had a stake in making PL/I succeed.
IBM cared only about their own mainframe hardware.
PL/I was viciously hard to port to other hardware.
By the time it was clear that the mainframe era was over, it was too late for PL/I to catch on.
I liked PL/I, but I don't miss it.
Why is that?
I think there is a couple of reasons.
Maybe because habit is second nature. When PL/I appeared FORTRAN had already existed for almost 10 years. When some new technology/language appears you can start to disparage existing code base by calling it legacy code. But there is no reason to start conversion immediately. Especially it was big problem in 70s due to the lack of automated converters and other tools.
The next reason might be that there is no silver bullet. PL/I was attempt to create such silver bullet - general purpose language. They tried their best, you know the rest. =) PL/I was monstrous language. Frow Wikipedia article:
Programmers were sharply divided into
scientific programmers (who used
Fortran) and business programmers (who
used COBOL), with significant tension
and even dislike between the groups.
PL/I syntax borrowed from both COBOL
and Fortran syntax. So instead of
noticing features that would make
their job easier, Fortran programmers
of the time noticed COBOL syntax and
had the opinion that it was a business
language, while COBOL programmers
noticed FORTRAN syntax and looked on
it as a scientific language.
Also the "old folks" like FORTRAN evolve under danger of death and added features such as structured programming, object orientation, etc. That reduced PL/I's relative advantages.
P.S. Also take a look at that part of Wikipedia article already mentioned.
Agree with the above, it was something like a Swiss army pocket knife with far too many blades.
As far as compiler availability, there was a project to build a PL/1 front end for the gnu compiler. See http://pl1gcc.sourceforge.net/ (though it looks moribund from the date of the last announcement). Also, http://www.thefreecountry.com/compilers/miscellaneous.shtml mentions a Digital Research PL/1 compiler for MSDOS which was supposedly free for personal use.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am currently entering my senior year as a dual major in Electrical Engineering and Computer Engineering, and have touched on a wide variety of different languages: C, C++, C#/XAML, Java, bash, python, VHDL, assembly, etc. I was wondering what you think would be a good language/few languages to become more proficient in, or to explore for a first time. Also, what level of programming you prefer (hardware, local, network, system, design, integration, and so on) If you could tell me why, I would be grateful, or if you'd like to relate your experiences, I am quite interested
. I am hoping to find a job in hardware design, but as I become better with some languages, I am finding just how much I enjoy programming, so I really have an open mind at this juncture. I would love to hear from some people in the 'real world'.
You want to understand:
Different language paradigms (procedural, oop, functional, parallel, logic [e.g., Prolog], constraint). Do some programming in each.
Different software architectures. OSes, standard applications (MVC, ...)
Software Engineering: requirements, specifation (especially design-by-contract), design, testing. These ideas hold in hardware engineering too.
I would start not by learning a programming language but the fundementals like below 1) computer organisation 2) operating systems theory 3) fundementals of programming (oop and functional) 4) data structures 5) Compiler design and principles 6) dbms concepts
As a budding hardware designer you might want to learn Bluespec. This is a very high-level hardware-description language based on work done at MIT. It's both a language and a company. They have some very impressive results on modularity, predictability, and reuse in hardware design. Check out the page on the Bluespec compiler and find out if you want to pursue it.
I was wondering what you think would be a good language/few languages to become more proficient in, or to explore for a first time?
What do you want to accomplish? You seem to have a good grasp of many popular languages with several typing systems and paradigms. If you want to learn something else new, I would recommend functional programming as it's vastly different from anything you will have encountered before (imagine trying to write a program without an assignment operator eg. =) and becoming more and more useful. Haskell, Scala, and F# are all forerunners of the functional programming pack.
Also, what level of programming you prefer?
It all depends on what you want to do and what skills you want to use. Hardware and system programming will involve more low level stuff (assem, C, C++). The others are less language specific, but involve other skills, like a thorough knowledge of networks and APIs.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Is there a general list of what different programming languages are used to solve different scenarios?
like C is also used in embedded programming,kernel programming,UI programming too(GTK).
C++ is also used for desktop/sever application programming and also business/enterprise applications which sit on the desktop/server or even the web, and also to make computer games
Java is also used for almost anything. same with .Net
Scripting languages are used widely in administrative tasks and web scripting too.
this is my general idea of most languages (excluding functional languages)
can someone correct me and post a precise list of what programming languages can/are used to solve different and most general and common problems across different domains in the IT industry?
These are stereotyped and oversimplified, but:
Assembly and C: embedded programming, OS programming
C++: OS programming, native GUI apps, games
Objective-C: Mac OS programming, iPhone apps
Java and C#: enterprise web services and web apps
PHP: web apps
Ruby/Python/Perl: scripting, web apps
Fortran/Matlab: mathematical and scientific apps
Erlang: high-concurrency network and telecom apps
Scala/F#/Clojure: functional languages, some initial attempts made for business and web apps
COBOL: business apps (yeah, still to this day...)
Prolog: artificial intelligence
Lisp: artificial intelligence (and according to some fans of the language, all of the above)
The best language depends on how you are modeling the solution, as some models just work better with objects, so an OOP would be best, some would best be done in a iterative solution and so on.
So, you either pick a language or you design the solution first, in some language-agnostic solution, such as using some of the UML diagrams.
Either way will create some constraints, and then you do the other part with the constraints imposed by the first one.
You can do basically any problem with any complete language, but some languages are just a better fit, but, again, it depends on the problem solution and how you model the solution.
Any list will be very subjective based on a very important constraint, your familiarity with that language.
But, you will find LISP in robots, for example, as well as in the scripting part of Autocad.
Smalltalk has been used a great deal in the financial industries, from what I have heard.
If speed and size is important then C or C++ is probably the best choice, such as in embedded systems, like dsps.
PHP and Perl, as well as Python have found uses in scripting for sysadmin tasks, but these are also used in many other areas.
You pick a problem and several languages, and I can give a design that will work for that problem, but the solutions will be very different.
It gets more interesting now since we have languages that cross paradigms, so, Java and AOP can solve problems better than just Java by itself. F# and Scala are hybrid languages, so they are both functional and OOP. Javascript can be a functional language, even though it is prototypical by design, but you can pretend to be OOP.
Most languages can cover a wide range of tasks, just with varying degrees of aptitude.
It is the corner cases which define a programming language. To find out which language is specialized for what, you'd have to see each language's website, or wikipedia article.
Scheme for instance, is a dialect of Lisp used in mathematics, because the syntax (and language extensions) are geared towards such use. That doesn't mean it can't do other things, it just means it's really really good at that.
This a somewhat unanswerable question. There is no definitive list of what a language is good for and not good for. Part of this is because language use drives new features in the language, and though some languages have constructs and syntaxes geared towards a certain "perspective" on a problem that does not prevent them from solving other problems.
In addition what defines a language? You listed several but what about SQL, ActionScript, CSS, HTML, etc? Some are not languages but they are used as such and the line is blurring pretty quickly.