What's the difference between the two? Are there things that scripting languages can do that C does not? Are scripting languages higher level programming? Is the moon made of cheese?
Scripting languages are typically used to automate simple tasks that you could do on your own. For example, you might write a web crawler or organize your file system with a scripting language. Scripts will often run in an interpreter without using any compiler; the source code is the program.
C++ and C# are imperative languages. C++ compiles all the way to native code. These languages will be much faster than scripting languages and they are designed to give you precise control over numbers, data structures, and the like. You could make a game in C++. However, these languages might not be appropriate for simpler tasks; any kind of networking will require using an external library and communicating with raw data.
Are there things that scripting languages can do that C does not?
No. There are some speed-related things that C can do but scripting languages cannot do, however.
Are scripting languages higher level programming?
Yes.
Is the moon made of cheese?
Yes. The moon is made of cold, hard, grey, non-organic cheese.
First of all, I assume that by scripting language you mean high-level, dynamically-typed programming languages such that Python/Ruby/Perl.
To elaborate a little on what rapidcoder said, while you theoretically can write any program in any decent programming language, in practice abilities of human mind are finite. What it means is, each programming language has a limit on complexity of the programs you can write using it, even if this limit does not come from limitations of the language itself. Therefore practical answer to the question you asked is: Yes, with a higher level programming language you can solve problems you couldn’t solve using C.
Note that "higher level" does not simply mean that the code is shorter by a constant factor (lets say 10x). Certain features allow you to attack the problem from completely different direction. For example, lets assume you have a set of types, and you want each type to be able to print/serialize itself. For a language such as C/C++, this basically means one additional function per type. For a language that supports reflection, you can write a piece of code once, and it will work for all types. So the complexity of the problem drops from O(n) to O(1).
That "complexity" stuff sounds like what my professor was talking about when he gave us a brief look into what CS3 would be about. He mentioned that CS3 was more about theory than practice. He mentioned that we would learn about algorithms and how to choose which one would be most effective in certain situations. Is that the complexity stuff you mention?
I was talking about complexity from the perspective of the programmer. Using big O notation for this may not be common, but I thought it fits well and is quite funny :) Of course normally this notation is used to describe complexity of algorithms. I'm sure this is what your professor was talking about. Sorry for confusion.
CS1 was basics. Learning about data variables, building functions, then onto classes(forgoed learning structs for classes). After classes we started pointers. Then in CS2 we got into practical use of classes and using pointers for dynamic mem alloc. After that we **briefly** got into graphics using the SDL(worst module of the class). Then we started dealing with a small portion of the Windows API for wav file configuration. After that we worked on our own version of the stack and queue system using linked lists and arrays. That was all she wrote after that. He told us we should read up on templates since everything we do as a C++ programmer is done using the STL and not programming stuff again since it was already done in the STL. We did not get to go over virtual functions or namespaces but the namespace thing is arbitrary. It just allows you to sort what variables and functions pertain to what functions. CS3 was introduced as a class that we would be building algorithms and then proving why our algorithm was fastest or most cost efficient. That's about it though. I'm taking assembly and C# in the fall. Definitely not interested in the assembly class.
Wow... that's strange. Our courses don't really cover programming at all (at least not for a specific language, except for functional and logical programming because we use Haskell and Prolog as example languages there), we are expected to teach ourselves.
Best thing for me was the practical exercises we did. Had we not sat down and did actual coding, the class would've been a struggle. I'm not a visual learner. I have to practice to get it down. Practice makes perfect. My degree plan has us taking a ton of programming classes. There's CS1/2/3 that deal with C++. Then theres the C# class, the VB class, the assembly class, and the java class. On top of that there's an internet programming class. Software engineering. Basically a good overall range of tools to use in the field of CS.
That sounds more like a computer programming rather than a computer science course to me. I agree that doing actual programming is the best way to learn programming, but I don't see how you need classes for that (or how classes actually help there for that matter, except maybe for providing an overall structure).
Also, while there's some merit in knowing C++, C# and Java, actually teaching all of them is highly redundant.
I disagree. I think of each language to be a tool in a very large digital toolbox. While C++ is high level programming, its not fair to say that its the best language for everything. Each language has its time and place. I cannot boast greater claim however in comparing languages and their abilities due to my lack of experience but I'm willing to wager that most likely every language or group of languages has its own special abilities over the other.
As to the CS class not really science-y, they broke up the actual degree that way. The hardware type stuff, i.e registers, counters, circuits, and the likes into a digital systems class. Then the software type stuff was put into all the various computer programming classes. We took an intro CS class my freshman year that encompassed hardware and software aspects to help guide students to figure out where in the CS field they want to work. I myself am intrigued in programming so I feel like the CS class that taught C++ was very welcomed.
If you'd read what I wrote, I said I don't think that learning all of these languages can have it's benefits. I'm questioning the value of teaching them separately, as they are so similar that knowing one enables one to teach yourself (through books or online resources for instance) the use of the others.
I think teaching each one is important. I know quite a bit about C++ but I'm struggling doing anything in C# or java. And java is supposed to be simpler/easier to use than C++. The little quirks about each langauge, the way things are implemented, are the things that requires each language to be taught seperately. And when you have a class full of newly turned 18-19 year olds in your class, attention spans are short. I found C++ hard when it came time for the pointer lectures. Dynamic memory allocation is a pain in the ass. Its nice, but a pain.
scripting languages are not full fledged languages.They are small languages, for ex javascript, shell script etc. C++ and c# are full fledged programming languages. http://www.cppbasics.com
scripting languages are not full fledged languages.They are small languages, for ex javascript, shell script etc. C++ and c# are full fledged programming languages. http://www.cppbasics.com
This seems unfair to scripting languages, and how the (censored) are they not full-fledged languages? Most are Turing Complete.
I'm not such an expert in either of both but i know C++/C# can be used to write high-end OS programs but scripting languages are mainly for the web eg php, python etc
Really, the only difference I can think of is that most compiled languages have IDEs (which is nice), but one doesn't have to compile scripting languages, they're either interpreted in some cases (Python and Ruby are often interpreted), or the program's run directly from the source files themselves. So you either have the advantages/disadvantages of an interpreted language, or you don't have to compile.
scripting languages are not full fledged languages.They are small languages, for ex javascript, shell script etc. C++ and c# are full fledged programming languages. http://www.cppbasics.com
Am I the only one who thinks it is funny that the person above first praises C++, a quite low-level language for today standards me thinks, and then links a page that screams how "operating at a higher level of abstraction" is extremely important?
Although I agree that scripting languages are smaller. What is a good thing, when we talk about languages themselves, not their libraries.