Click here to Skip to main content
15,910,877 members

Welcome to the Lounge

   

For discussing anything related to a software developer's life but is not for programming questions. Got a programming question?

The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.

 
GeneralRe: programming Pin
Member 125026194-May-16 6:21
Member 125026194-May-16 6:21 
GeneralRe: programming Pin
Rage4-May-16 6:39
professionalRage4-May-16 6:39 
GeneralRe: programming Pin
Sascha Lefèvre4-May-16 6:41
professionalSascha Lefèvre4-May-16 6:41 
GeneralRe: programming Pin
V.4-May-16 6:44
professionalV.4-May-16 6:44 
GeneralRe: programming Pin
Plamen Dragiyski4-May-16 23:26
professionalPlamen Dragiyski4-May-16 23:26 
GeneralRe: programming Pin
George Tourtsinakis5-May-16 0:23
George Tourtsinakis5-May-16 0:23 
GeneralRe: programming Pin
Member 107319445-May-16 12:51
Member 107319445-May-16 12:51 
GeneralRe: programming Pin
Member 107319445-May-16 12:51
Member 107319445-May-16 12:51 
How many programming languages do you need to know to make an effective app?

One.

Why? Because developing a piece of software that is "effective" and "intuitive" for the user(s) isn't a result of the language used, but rather how well you have communicated with your user(s) as to what their needs are, and how to implement and accomplish those needs. You can make a great application using for instance 10 different languages and frameworks, and still end up with something that the user(s) hate, because it doesn't do what they need it to do.

That said - most modern applications use more than a single language in their development. For instance, web applications typically require the developer to know at least one core language (like python, php, ruby, etc), and then stuff like javascript, css, html, and a whole host of other bits and pieces.

Whereas native mobile application development typically only require one to know a single language, plus the OS of the platform (Java and Android, ObjectiveC or Swift and iOS) - but of course, if you want to target both Android and iOS - you need to know all of that. Or - go another route with a framework that works on both (I personally like Ansca Corona - which uses Lua for the coding part).

Application development for other scenarios might use multiple languages - for instance, game development will typically have a "core language" for the main game engine (usually C++), but then for other pieces (game logic and such) will be developed using a "scripting language" (which may be compiled in to the final game, or exist outside of it as modules) - which could also be the same as the core language, but is generally something like Lua or some other simpler language. This allows for a team to be broken up into those handling the hard-core underbelly of the game (graphics and such), versus the game logic, which is higher level (and so can be done in a simpler to use language). This kind of structure also improves workflow and other issues that can arise during a project.

Now - as far as your question on "combining two different languages together" - to an extent, that's possible - depending on the language and the compiler. For instance, many C/C++ compilers support the ability to add "inline assembler" to the code - this used to be something widely used; today, while I am certain it is still used, it probably isn't done as heavily as it once was. In theory, something like this could be done for any language, and allow you to combine different languages all in a single source code file - but generally it isn't done, as it would be a complete mess. Instead, what is more typical is a "separation of concerns" - where one part of the application is coded and compiled in one language, but if it needs to access something coded in another language, an API is involved (which may mean a wrapper around a library is created for the language calling the API - or some other method is used to invoke methods within the targeted API - like RESTful or JSON API calling conventions for remote web services).

There's also another possibility - rarely used, and is more a curiosity currently under research (and may stay that way - but the possibilities are intriguing): It's called Domain Specific Language (DSL).

Essentially, at the core - it's a programming language specifically crafted to solve a particular problem domain, typically for the application needed by the user. So - for instance - if you were making an application for use in a bakery, you would first craft a programming language specifically for the tasks and domain of baking (whatever that would ultimately mean). In one way, it "silos" software development - so now it is possible for there to be a multitude of programming languages (as well as highly proprietary ones - only known to a single business entity) - this can be bad from a maintenance and hiring standpoint.

But on the other side, by having a language tightly coupled to the needs of the user (and the problem domain), that language can be crafted so that problems within that domain are easier to solve, among other possible advantages. There isn't many "real-world" examples I can think of - the closest I can think of off the top of my head would be stuff like MATLAB, Octave, Mathematica, R (all for stats and mathematics) - as well as certain graphical programming languages like LABview. To an extent, there are also a few industrial process "languages"; ones for industrial robot programming, as well as things like g-code (CNC) and "ladder-logic" (for programmable logic controllers - though today, ladder-logic is mostly old-school, and instead other languages are used, but some are still compiled to a ladder-logic format).

One interesting example of a DSL system (which I've wanted to find time to play with) is JetBrains Meta Programming System (MPS) [^]

Essentially, it's an IDE and programming system that allows you to create (and mix) custom DSLs while you code. In other words, you can create your DSL as your write your code (!) - and create specific DSLs for each area of your code (need a particular DSL just for 3D graphics - go for it - but you need something else for your business logic? Again - create it right there). At least, that's how I understand it from a high level (I may be wrong). I personally like the concept of a DSL - but I like the concept of creating your own programming language on the fly as you code much more intriguing (I can also see it being fraught with pitfalls, too).

Anyhow - JetBrains MPS is something you and others might find interesting, if you haven't seen it before. It's also open source [^] which makes it just that much more intriguing to look into.
PraiseThank you! Pin
Richard Deeming4-May-16 1:37
mveRichard Deeming4-May-16 1:37 
GeneralOT Pin
PompeyThree4-May-16 3:00
PompeyThree4-May-16 3:00 
GeneralRe: OT Pin
Richard Deeming4-May-16 3:15
mveRichard Deeming4-May-16 3:15 
GeneralRe: OT Pin
PompeyThree4-May-16 3:18
PompeyThree4-May-16 3:18 
GeneralRe: Thank you! Pin
Dave Kreskowiak4-May-16 3:46
mveDave Kreskowiak4-May-16 3:46 
GeneralYou're welcome ! Pin
Rage4-May-16 4:50
professionalRage4-May-16 4:50 
GeneralWhen I was young... PinPopular
PompeyThree4-May-16 1:25
PompeyThree4-May-16 1:25 
JokeRe: When I was young... PinPopular
Johnny J.4-May-16 2:23
professionalJohnny J.4-May-16 2:23 
GeneralRe: When I was young... PinPopular
PompeyThree4-May-16 2:39
PompeyThree4-May-16 2:39 
GeneralRe: When I was young... Pin
den2k884-May-16 3:57
professionalden2k884-May-16 3:57 
GeneralRe: When I was young... Pin
Rage4-May-16 5:24
professionalRage4-May-16 5:24 
GeneralRe: When I was young... Pin
Marc Clifton4-May-16 6:07
mvaMarc Clifton4-May-16 6:07 
GeneralFSWO Pin
PompeyThree3-May-16 23:55
PompeyThree3-May-16 23:55 
GeneralRe: FSWO Pin
OriginalGriff3-May-16 23:57
mveOriginalGriff3-May-16 23:57 
GeneralRe: FSWO Pin
Manfred Rudolf Bihy4-May-16 0:11
professionalManfred Rudolf Bihy4-May-16 0:11 
GeneralRe: FSWO Pin
HobbyProggy3-May-16 23:58
professionalHobbyProggy3-May-16 23:58 
GeneralRe: FSWO Pin
PompeyThree4-May-16 0:04
PompeyThree4-May-16 0:04 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.