You can also group languages by their typingdiscipline:weaktyping, which supports implicit type conversions, andstrongtyping, which prohibits implicit type conversions. The lines between the two are a bit blurry: according to some definitions, C is a weakly-typed languages, while others consider it to be strongly-typed. Typing discipline isnt really a useful way to group languages, anyway.
Wouldnt it better to say Which type .. instead of how many?
Procedural: Assembly, Java, C, F, Lisp, Fortran.
I remember that one. I may have even used it. Boy, that was state-of-the-art. You didnt have to manually guide the milling machine, just push the start button. And if there was a bug, all hell would break loose.
How about declarative (e.g. Prolog, SQL) ?
How would scripting languages,e.g. VBScript, fit into this? It can be a bit procedural and a bit OO as one can create various types, so would that make it a hybrid?
@sova: (continued) You dont have to master all the off-putting math. For me, what mattered was the framework it gave me for thinking about things.
Is it possible to have a Earth-like planet with a red moon, similar to the color of Mars?
Well I have learned that something like Prolog and C are fundamentally different, so I was thinking each of them corresponds to a different kind of programming language, and I was hoping to get a grasp of
In JavaScript we have a sort of stunted hybrid prototypal OOP where objects are considerably more simple, highly mutable, but we still have the ability to separate interface from internal concerns, which IMO, is the important aspect of encapsulation.
Discuss the workings and policies of this site
Student dissatisfied with exam grade: what to watch out for?
Why are research papers written in language thats difficult for undergraduate students?
Can someone on the Ethereal Plane tell if someone on the material plane is a ghost?
Another way to look at it is in terms of control structure. When the language is executed (if it is) what is the order in which things happen, to accomplish what you want? Examples are: simple straight-through execution, recursion, backtrack, parallelism. One I (modest cough) discovered wasdifferential execution.
It depends on how you want to classify languages. Fundamentally, languages can be broken down into two types:imperativelanguages in which you instruct the computerhowto do a task, anddeclarativelanguages in which you tell the computerwhatto do. Declarative languages can further be broken down intofunctionallanguages, in which a program is constructed by composing functions, andlogicprogramming languages, in which a program is constructed through a set of logical connections. Imperative languages read more like a list of steps for solving a problem, kind of like a recipe. Imperative languages include C, C++, and Java; functional languages include Haskell; logic programming languages include Prolog.
Imperative languages are sometimes broken into two subgroups:procedurallanguages like C, andobject-oriented languages. Object-oriented languages are a bit orthogonal to the groupings, though, as there are object-oriented functional languages (OCaml and Scala being examples).
@Sova, Id recommend making your first choice of new languages to try out something that doesnt use c-based syntax. That will get your head focused more on how it works vs. how its different from the one you know best.
The thing about OOP is that there really is a lot of stuff you can pull off that is essentially OOP-oriented without technically being OOP. There are purists of course but at the end of the day, Design Patterns are about achieving certain abstractions that work well in certain situations. Dont be too quick to assume ideas from an OOP-based language have no use in something thats more procedurally-oriented. And Im not talking about JavaScript. Its not at all limited by its goofy version of a prototype based OOP paradigm.
How Stack Overflow for Teams Fits into the Community
You should look atProgramming Paradigms for Dummies: What Every Programmer Should Knowby Peter Van Roy. This will give you an overview about how it is going on outside.
+1 for using a different type of classification, and also for recognizing that procedural in fact contains most of the other peoples classifications. (of course that only means that the word has very little meaning, and the meat is in such subdivisions)
Logic Programming languages:Logic Languages are used to create programs that enables the computer to reason logically. eg: Logic language
JS devs and Java devs tend to not understand each other at all and I think it has a lot to do with the two languages falling on near-opposite sides of this particular design spectrum. I dont want you to protect me from myself or from the other devs on my team. I want to do a lot more in a lot less code and to do it all in very different (but consistent for a given domain) ways depending on the situation. There are absolutely tradeoffs to both and a lot of languages tend to fall more in the middle.
One way to look at is in terms of surface structure. How directly does it allow you to encode ideas concisely, so that if you change your mind about what you want, the corresponding change to the code is also easy, with little chance to introduce bugs.
C-Based or what-have-you. Java has a C-based syntax. I highly recommend trying out something like Python or Ruby to get your head out of the syntax and thinking more in terms of fundamentals of how a given language works. Im of the opinion that no syntax needs to get bulkier than C-based and have no problem building blocks around white-space.
Another useful viewpoint is that any time a data structure is designed, a language is born. Data is executed by the application programs that comb through it and do things, just as a program is just a bunch of data (like byte codes) that are used by an interpreter to do things.
Machine language:Machine language is a low-level programming language. It is easily understood by computers but difficult to read by people. This is why people use higher level programming languages. Programs written in high-level languages are also either compiled and/or interpreted into machine language so that computers can execute them.
Why does having a soda tax seem so hard to achieve?
Object Oriented Programming languages:In OOP languages, a program is divided into Object that contain data as well as methods that operate on the data. Java, C and C++ are OOP languages.
Animation movie (80s-90s) with brain-sucking insects
2: the type that does what you want and the type that doesnt
Where can I find publicly accessible paternoster elevators?
Learning about different types of programming languages
@sova I can only think of two languages that work kind of like that. Erlang is based heavily on parallel processing, but if you want more like what I was talking about exactly, you should look into Polyphonic C. Its a research language (now folded into C-omega) based on Pi-Calculus (like how FP is based on lambda calc) Pi-calc is based around the unit of a process, and you declare processes and a combination of synchronous and asych calls into them. Also look into Arrows in FP, especially Haskell. Arrows are very much like that.
Great Expectations [is written vs has been written] by Charles Dickens
Tactics and strategy an army can use to counter Human Wave attacks?
This is exactly what I was looking for. Thank you very much.
Likewise there are plenty of interpreted languages that still have something of a compile-ish process for running inside a virtual machine like Java does. You still have to rebuild to see changes to things.
For other characteristics of programming languages (e.g. Type Systems), look here:
Im not sure where the debate is at for Java, but I know a lot of Java devs were clamoring for this feature a year or two ago. In a non-closure language, when a function closes, anything that is somehow able to reference stuff from inside that function wont be able to access it because it was garbage collected. In a closure, execution context is bound such that if youre able to reference stuff inside that closed function from another scope like in a returned object or function you basically get those vars as they were when the function closed. Its like a jamming your foot in the door of garbage collection, although I suspect its implemented more like copies of those vars made into local vars of the referring entity.
Not having these in a language is a hard thing for me to give up. You can pass functions around like they were data for use in other contexts. This makes event handling schemes in particular very easy to implement but it also makes it very easy to adapt the language to work the way youd like it to. It is, more than anything I suspect, the thing that has made JavaScript the success that it ultimate has been in spite of being designed in two weeks and getting Java-approximate syntax slapped on to it as a marketing scheme.
Changes to Our Privacy and Data Policies
And then theres JavaScript and Python which you can execute on the fly, command by command in a console in a live environment. All three can lead to very different ways of writing code.
I tend to see the two as design tradeoffs. When you are at a much lower level and performance is critical, static typing makes a lot of sense. Ive never understood this notion of one being safer than another somehow but I came up in a very plastic/dynamic language where you just learn how the typing system works and what to expect, basically. Type shenanigans are rarely a concern for me in JS. In some ways the flexibility can make things more robust, although admittedly a touch more arcane for a more Jr. level dev if you dont know about some of the pot-holes in the language.
Any Platform Event Library or Best Practices out there?
Classical OOP vs. Prototypal OOP vs Almost-OOP(structs in C?) vs Non-OOP:
What is the correct way to temporarily cast void* for arithmetic?
Yeah this was the general idea I learnt somewhere along the way.
Why are automation testers screened in the same way as developers during interviews?
site design / logo 2018 Stack Exchange Inc; user contributions licensed undercc by-sa 3.0withattribution required.rev2018.5.23.30497
High-level languages can further be classified as:
Rigid/Strict/Safe vs. Giving You all The Rope You Want:
I tend to think in terms of features:
Are uniformly continuous functions dense in all continuous functions?
Assembly language:Assembly language is a representation of machine language. In other words, each assembly language instruction translates to a machine language instruction. Though assembly language statements are readable, the statements are still low-level. A disadvantage of assembly language is that it is not portable, because each platform comes with a particular Assembly Language.
These are the main ones, but theres a lot of other paradigms out there, and theres plenty of overlap between them.
I have very little familiarity with compile time vs. run-time environment concerns but I get that theres a whole bag of concerns there that I rarely think about.
Compiled vs. interpreted w. Build-Process vs. Interpreted/Console:
Even in class-based OOP there is a great deal of room for variation. Whether you can do multiple inheritance (ew, well in excess, ew), define interfaces, etc…
I think a short-cut to all these is to learn enough Lisp to do some semi-useful things. Most of these paradigms started out as ways of using Lisp, so its a simple way to try things.
Why do journals reformat your submissions?
ah! paradigm what a good word! thank you
Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10reputationon this site (theassociation bonus does not count).
Block-Level is the most common (anything between in most c-based syntax languages). JavaScript scope is built around functions (which are also used to build objects so effectively objects too). Theres also a great deal variation in what kind of access you have from inner scope to an outer-scope. Im not familiar with other scoping schemes but Im sure they exist.
If you want to go further, you can readConcepts, Techniques, and Models of Computer Programming. You will not learn a banch of languages by this way, but you will learn paradigms which lie behind different kinds of languages. So, learning a new language will be more easy for you.
Cool. I will learn LISP and be enlightened. Exciting 😀
Basically, I want to learn lots of programming languages to become a great programmer. I know only a handful to depth andI was hoping someone could elaborate on how manyclassesortypesof programming languages there are. Like how you would lump them together if you had to learn them in groups.
Rent cheque was stolen from landlord – am I obligated to pay again?
Procedural languages:In Procedural Languages, a program is written in a sequences of steps that should be followed to produce a result. COBOL, FORTRAN and C are some Procedural languages.
I spent 20 years installing postprocessors on gobs of systems.
@JB King OOP languages usually are procedural, at least within the method bodies. Also, its a common misconception that OOP means objects. Lots of languages have data types and objects. Theres a lot of debate on what the exact definition of OOP is, but it usually includes inheritance and/or encapsulation (private state) as major themes. A language without either in some form would be difficult to classify as an OOP language.
Block-Level Scope vs. Function Scope vs. ?:
Regex to detect if all alphabetic characters are upper case
How do I avoid lecturing my players
Shouldnt assembly be considered procedural?
@sova I would accept this as the best answer, because there are simply too many paradigms to list in a P.SE answer, much less to describe the nuances of each.
There are different ways to answer this, but in terms they can be categorized as:
@sova: For me, information theory was a great revelation (both Shannon and Kolmogorov). Its about how meanings are encoded and passed through channels, with concepts of bandwidth, error-detection, minimal coding, randomness, etc. So, data encodes information, and algorithms are channels. Programs encode information, and programming is a channel. So, what information is encoded? where does it come from and when? where is it going to? what are the sources of errors (noise)? how are they corrected? I found that a useful perspective.
This site uses cookies to deliver our services and to show you relevant ads and job listings. By using our site, you acknowledge that you have read and understand ourCookie PolicyPrivacy Policy, and ourTerms of Service. Your use of Stack Overflows Products and Services, including the Stack Overflow Network, is subject to these policies and terms.
High-level language:High-level languages are what most programmers use nowadays. Languages such as C, C++ and Java are all high-level languages. Advantages of high-level languages are that they are very readable and portable. A disadvantage of high-level languages is that they are less powerful than Assembly Languages. Because a single statement in a high-level language is translated into many machine language statements.
Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See theHow to Askpage for help clarifying this question.If this question can be reworded to fit the rules in thehelp center, pleaseedit the question.
How about concatenative (stack-based) programming languages, such as Forth and Factor? You could consider it a type of Functional programming, but its probably distinct enough to deserve /wiki/Concatenative_programming_language
However, if you say that the act of using a data structure creates a new intermediate language then you could also argue a new language is born in every algorithm (all operations are necessarily done on a data structure), and with reduction, a new language is born in every line of code. I think you mean something else though but Im not quite sure I understand yet?
I have to add that there are programming languages for specific applications. The one that comes to mind is APT (Automatic Programmed Tool) a language used in manufacturing for machine tools.
There are a number of kinds of languages around, but new ones can always appear. Basically, the purpose of a language is to permit encoding of ideas, concepts, or requirements, as directly as possible. To that end, there can be situations where existing paradigms are wanting, and a new one might be needed.
Was going to pose something similar, but will +1 and add comments instead. Each category or combination also has numerous spin-offs created by focusing on particular elements. OOP, for example, begets: Prototype-based OOP, Aspect-Oriented Programming, Component-Based Programming, and so on. Functional paradigms also have spin-offs, such as languages where an asynchronous process or thread is the base unit and you program by composing parallel processes together.
Sign uporlog into customize your list.
For types of programming languages (Paradigms), look here:
Stack Exchange network consists of 173 Q&A communities includingStack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.
Learn more about hiring developers or posting ads with us
Application process has been in German (native tongue), should I inform the candidate that the interview will be held in English?
You can also group languages by typing:staticanddynamic. Statically-typed languages are ones in which typing is checked (and usually enforced) prior to running the program (typically during a compile phase); dynamically-typed languages defer type checking to runtime. C, C++, and Java are statically-typed languages; Python, Ruby, JavaScript, and Objective-C are dynamically-typed languages. There are alsountypedlanguages, which include the Forth programming language.
Functional languages:In Functional language, a program is divided into function definitions. Functional languages are a kind of declarative language. They are mostly based on the typed lambda-calculus with constants. Some of the famous Function languages are Scala, F, Clojure and Lisp.
Learn more about Stack Overflow the company
SQL Server view – bad naming convention?
Probability of drawing the Jack of Hearts?
Would you like to answer one of theseunanswered questionsinstead?
Are womens voices one octave higher than mens voices?
Coming from a Java background, Im familiar with static typing, but I know that in addition to dynamic typing there has to be such variety in available languages that I would love to see a categorical breakdown if possible.
Ive worked on programs that generate gcode for milling machines. Ive literally held and seen the results of programming bugs, frequently mine.
Detailed answers to any questions you might have
! You could potentially argue this should be closed as aduplicate of thisbut I think theyre distinct enough questions to remain separate.
Quickened spell and movement/dodge, does order matter?
Start here for a quick overview of the site