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.
In preparation for a blog post about programming, I'm gathering ideas around areas of programming and software development that are actual, new, fresh, cool, interesting and are potentially profitable in the near future.
I've gathered these ideas:
apps for Facebook and Twitter
apps for other API based websites (social apps)
cell phones, Pocket PC applications
robots and automation
web tool applications for other programmers
multilingual websites and web tools
Do you know other issues/trends that can be added to this list?
Here is my top 10 list of what is funky, cool, happening and grooooovy:
In at 1, Concurrency, scalability and distributed data implementations
In at 2, Programming Languages and Meta-Object structures
In at 3, Image analysis and automated environment interpretation
In at 4, AI and NLP combinations in Search technologies
In at 5, Self-replicating automata and swarm intelligence
In at 6, Human/Machine hardware interfaces (wetware)
In at 7, Nano-robotics in medicine
In at 8, Medical/Life Simulation (think simulating a virus that attacks cancer)
In at 9, Real-time Raytraced graphics
In at 10, Automated Social Interaction/experimentation using online communities
I feel it might be balanced to add a few Empty hype items that have potential, but so far are pretty lame/boring from a technical perspective ... but with some thought could get interesting:
Location Based Services
Google Wave ... isn't this just very rich, relational email? I take this back, I watched the developer video thingy. Now i'm hyped :P
Wikis ... Blank canvas, not much going on. How dry is wikipedia ;P
Payment/virtual currency. Too much freeconomy going on online.
Secondlife/MM-style games - Interesting tech, no juice
Flash, Silverlight, JavaFX - A single open solution might be nice.
Google Chrome OS - Doing away with X11! Sounds like Microsoft's embrace-extend-extinguish game plan to me
Note: Facebook, Google and Twitter do not appear in the list. They are API
Cloud computing and apps that utilize it effectively.
Using the tremendous power of GPU for non-graphics-relateted calculations. See nVidia CUDA to get an idea. This is pretty new right now so it's only gathering momentum, but I expect that it will see more widespread use in the coming decade.
Visual programming through tools like Processing, "an open source programming language and environment for people who want to program images, animation, and interactions."
Telecommunications area in general.
And particularly environments/programming languages supporting it (Erlang for example).
Technologies supporting cloud computing reliability, security and scalability
Physical computing / ubicomp, especially Arduino and similar ways that these concepts can be popularised. (See this piece comparing its significance to that of the Altair 8800).
As always, Fortran.
All areas of programming are, or could be interesting. But this doesn't really answer your question :)
Well, mashups are cool.
My programming interest in technology are Mashups, Web 2.0, .Net 3.5, parallel programming. However, learning algorithms are also interesting, I'm interested on evolutionary learning such as genetic algorithm and ant colony. I think, modern technologies and learning algorithms would be a good combination.
Metaprogramming is also pretty cool. Code analysis (FxCop, StyleCop, NDepend, ...) and modifying existing assemblies (ILMerge, Mono Linker, ...).
Mobile device development such as iPhone, Palm Pre, Android programming seem be reasonably hot at the moment.
What are the most cool and modern
programming areas nowadays?
Robotics.
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 10 years ago.
I've always enjoyed programming and I always enjoy learning new langauges (anything e.g. Java/C#/Erlang/F#/Clojure/Ruby etc), but something's never seemed to enjoy it as much as I want.
One thing I'm curious about which I'm wondering if I might enjoy completely is CAD/CAM/CNC programming and design and I was wondering if anyone has any tips on where/how to start learning, what software there is out there that would be helpful for learning with (preferably free/open source and preferably for Linux, though I appreciate options may be limited).
Any tips would be appreciated.
You can start trying EMC (free) at http://www.linuxcnc.org/
Just a few comments:
CNC is a generical name for computer controlled machines (the "N" comes from Numerical)
There are several standards (as always) for the language, perhaps the most used is ISO 6983. However you'll find out quickly that each machine implementation is different.
There are also relatively cheap machines (under $1000) that you can buy or DIY to effectively run your programs and make "real" things. See for example http://buildyourcnc.com/default.aspx or http://wiki.makerbot.com/cupcake. You'll not catch up the quirks of the trade until you can run your programs in a real lathe or mill.
CAD and CAM programs from the programmer's POV can be thought as visual CASE tools.
Check out the available books like 7 Easy Steps to CNC Progamming . . . A Beginner's Guide Also, checkout MyIGetIT.com they have great turorials on the major CADCAM systems. Here is a code ( RES-10-HAYPB) for 10% off any/all of their cad/cam training courses.
The key to learning anything is having a specific project in mind. For example when learning to play a musical instrument, it is much easier to pick a song or style of music than to just "try to learn to play guitar." When you have a song or piece in mind, they you can focus your learning.
The same is true of learning CAD/CAM NC programming. What do you want to make? will it require a lathe, milling, drilling, routing, laser cutting, waterjet or . . .? If you want to make tractor spondles or disc rotors for a motorcycle that is different than where you would focus your efforts if you wanted to learn to program a router to make cabinets, or door panels.
Like programming computers what is your project? working with date, making games or simulators, perhaps calculation programs or business utilities. Having a reason to learn C#, Java, SQL or what ever is the key to effective learning.
As someone who has worked in the industry for a number of years I'd have to say that I don't think there is anything available for free and certainly not open source that would get you very far. Most packages cost thousands of dollars. However you could learn some basics by just coding in straight g-code; you really need a machine available to try with as every machine is somewhat different in specifications. Generally the programming manuals that come with CNC machines are the best place to start.
Why not try opencascade,it's opensource.
This is a little late but MasterCAM does offer a student version that comes with instructional books from emastercam.com
There are also many community colleges in areas with large machine trades that offer classes in MasterCAM, CATIA, and NX. It depends very much on who the largest vendor in that area is. MasterCAM is probably the most popular mid-range CAM product and is almost a prerequisite for a CAM programming career, but is a mid-range software and the usability of the software reflects that.
Most machine programming is done using software and it is more correct to refer to it as CAM programming. NC programming lost prevalence almost as soon as CAM software came out in the 1980's. However, it is very important to be proficient in NC code. I still write NC programs every day.
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.
How often is language the deciding factor for selecting a job?
Many of us here are well versed in many languages, C++, Java, C#, and likely have many other languages under our belt for the right occassion (really any occasion is the right occasion for Python, AMIRITE?), so this isn't so much a question of choosing a job that is a good fit based on your skill set. Rather, if you are skilled with most languages, do you pick your favorite, or do you follow the money (given the tight economy).
I'm considering coming out of retirement, and have started to look around and what's available.
Over the years, I've moved towards C# and Python; many jobs in the area are looking for .NET developers, but there are plenty of them that do not. I cut my teef on C++, consider myself adept at the language, and know my way around a Java. But I find myself really digging what they're doing to C#, and I have always loved python.
Even if the work will be interesting, how important is the language to you?
I think that although in its essence programming is bigger than any language(languages are just the means, not the goals) everyone has a preference toward some languages. However, it often turns out that our preferences are towards languages not considered mainstream.
I live and work in Bulgaria(a country known from the movies as the center of crime in Europe, though that's not the case). Here 90% of the job ads are for PHP, Java and C# developers... There is also C for embedded development(which I hate), C++ (for maintenance of older systems - no one starts new projects in C++ anymore) and Cobol :-) I'd very much like to make money developing in Clojure or Ruby for instance, but the reality is that there is simply no demand around here. Of the three options I've found Java to appeal most to me - it's a nice language, with a nice community around it and a great VM behind it. So I naturally consider Java ads first, but I'm always open to any challenges as long as find them intriguing...
I would think that one would have a bias towards not just the language they want to develop in, but in the environment and type of applications they are likely to be working with. I think that would be the deciding factor?
Java - Coffee grinder
Python - Snake charmer
C - Optician
C# - Laser eye surgeon
C++ - Night vision goggle manufacturer
Ruby - Jeweller
.NET - Fisherman
the language itself doesnot matter so much, as the technology used does.
for example, a php/mySQL developer could easier convert to ASP.NET/MSSQL, than a .NET Windows Forms programmer will. I was both and felt more support from my php/mysql skills than my desktop C# programming ones.
But when the working process is annoying to you (e.g. you don't even want to go back to C++ coz it was hell for you), you better go find .NET desktop jobs - you will find that 90% of work done in the past by you in C++ was abstracted in .NET libraries and you'll get more fun from programming (though some people love that so-called 'c++ hell' for hacking).
as Chuck Jazdzewski fatherly said, (at the end of http://www.removingalldoubt.com/PermaLink.aspx/a32977e2-cb7d-42ea-9d25-5e539423affd ) , programming is fun, but shipping is your job. Joel Spolsky (www.joelonsoftware.com) has also nice entries about that.
Consider this when you are looking for a new working environment.
I've chosen Java. I know many more, but I think its the best decision to stick with one. If you work one year Java, one year c#, one year python you will not get a job as Java programmer that should have at least 3 years of experience.
For a coder, who's profession is based on it, is should be the main deciding factor. (...with Money a very close second!)
This may sound shallow but I tend to stick with the one I know best. Having spent several years in C# and .NET I wouldn't go back to PHP or Java, not because they are bad but rather I don't want to have to re-learn everything again... it would be sort of like starting all over again.
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.
Question 1: How exactly do modern computer language come into being and why? How do they get their start and who is behind them?
Question 2: If any, what languages currently in their infancy are showing promise?
How exactly do modern computer language come into being and why? How do they get their start and who is behind them?
It's a multistage process:
Pointy-headed type theorists and other professionals are continually proposing new language features. You can read about them in places like the Proceedings of the ACM Symposium on Principles of Programming Languages (POPL), which has been held annually since 1973.
Many of these proposals are actually implemented in some research language; some research languages I personally find promising include Coq and Agda. Haskell is a former research language that made it big. A research language that gets 10 users is often considered a success by its designers. Many research languages never get that far.
From research to deployment I know of two models:
Model A: A talented amateur comes along and synthesizes a whole bunch of existing features, maybe including some new ideas, into a new language. The amateur has talent, charisma, and maybe a killer app. Thus C, Perl, Python, Ruby, and Tcl are born.
Model P: A talented professional make career sacrifices in order to build and promulgate a new language. The professional has talent, a deep knowledge of the field, and maybe a killer app. Thus Haskell, Lua, ML, Pascal, Scala, and Scheme are born.
My definition of a professional is someone who is paid to know about programming languages, to pass on that knowledge, and to develop new knowledge in programming languages. Unfortunately this is not the same as designing and implementing new languages, and it is not the same as making implementations that many people can use. This is why most successful programming languages are designed and built by amateurs, not professionals.
There have been quite a few interesting research languages that have had hundreds or even thousands of users but yet never quite made it big. Of these one of my favorites is probably Icon. I have argued elsewhere that nobody really knows why languages become popular.
Summary: Languages come into being because people want to make programming better, and they have new ideas. Languages get their start when somebody takes a whole bunch of ideas, some new and some proven, and synthesizes them into a coherent whole. It's a big job. The person behind a new language might be a programming-language professional, but historically, most languages that become widely used seem to have been created by talented amateurs.
Answer 2: Fortran 2008 looks very promising.
Come on, bring on the downvotes you humourless Java-teenies, Pythonettes, Rubes and Haskellites !
1) Most development environments these days are built to abstract a lot of low-level/inner workings of an platform to speed up development and cater for new user-interfaces and plaform technologies. There are a both open-source projects and corporates behind these changes... For instance an example would be jQuery is a newish Library that just wraps a lot of javascript making things easier and cross-platform...
Bjarne Stroustrup wrote a book on the history of C++, called "The Design and Evolution of C++".
The genesis of a programming language is always a different story. I'm currently reading "Masterming of programming", which is a series of interview with authors of popular languages. They explain what problems they tackled and how the language was born -- a really cool book.
The TIOBE index can give somehow a trend amongst the programming languages, including the emerging ones. I bet that the future lies in language that will run on top of the JVM or CLR (Notably due to the effort invested in the VMs which are now really great). Concurrency seems to be one of the hot problem of today; so I guess we will see some interesting moves in this area (e.g. Clojure).
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.
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.
Okay, so far, I have been taking computer science courses in my high school and doing some of my own research on the web, and I have found I really like the subject. However, the computer science courses, having given me a small amount of experience in a few languages (C++, java, and python), leave me wondering where to go for development on my own.
I would like to create desktop applications, or even web applications if I could wrap my head around it. What language would you think would best facilitate this?
As a side-note, what are some good books or online documents that explain general computer science topics? I have found some good ones, but they haven't given me the depth I really want.What are some good ones?
Find an "itch"--a program you wish existed, that would be useful for you to have, but you can't find (or costs money). Then try writing it, using online resources (like Stack Overflow) to help you.
At this stage in your career, language doesn't matter very much. Some languages are better than others at certain tasks, but often your own level of comfort with the language outweighs other issues. So just pick a language you're interested in, and a project you're interested in, and get to work.
You may find that you need to start with a simpler project, or you may find more resources for a different language or framework. But getting started with something--no matter what that something is--is probably the most important thing.
Here is a classic but still quite relevant book if you ever want to level up from coder to software engineer.
Since you're still in high school, I would tell you that time is on your side. You have plenty of time to develop as a computer scientist. Therefore, take the long view for your development. So it's much better for you to understand the abstractions that underly software technology.
In my humble opinion, C++ and Java will always be around and you have plenty of time to develop your skills in that arena. However, a higher level language like Scheme or Python will pay plenty of dividends. You might find this recommendation highly enlightening.
In addition, every application will deal with a database as its system of record. Understanding SQL and data modeling is a win-win.
Also, understanding formal logic and/or discrete mathematics is indispensable for computer science. Computer languages are nothing but formal languages for executing
procedures: i.e. mathematical induction is used to define their syntax and semantics.
It sounds like you would enjoy jumping into a high level, modern language that's native to the operating system you want to target; Objective-C or C# for example. On the other hand if you really want to do something for the web, building a web app isn't much harder (there are just more choices to pick from for the back end and front end technologies you decide to use).
Basically, decide what project you want to work on and choose the best language for it. What really matters is that you're working on something.
What language to further develop in?
Given that you know C++, Java, and Python already, a next language I might suggest would be SQL and DDL: defining databases, and getting data in and out of them.
If your CS course didn't touch on it, I highly advise spending a bit of time with a more functional style of language like erlang, haskell or even lisp.
They won't become your day-to-day hacking language overnight, but can really help you grasp important programming concepts relavent accross all languages.
....especially the one about choosing the right language for the task at hand.