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.
How many programming languages do you need to know to make an effective app?
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.
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.
So? Stop wanking and get out there and mow the lawn, you lazy, no-good asshat! Or there'll be no dessert for you tonight!
How's that? Close enough?
Anything that is unrelated to elephants is irrelephant Anonymous - The problem with quotes on the internet is that you can never tell if they're genuine Winston Churchill, 1944 - I'd just like a chance to prove that money can't make me happy. Me, all the time