|
To all the nerds out there who actually know something about this and are willing to help.
I want to pick up a scripting language and I'm torn between starting with Java or C#. I have done quite a bit of "work" in C++, but I don't know how much will translate to the scripting language except for the general programming stuff like design and mindset.
I'm tilting a bit towards C# since it has pointers which i know how to use from C++, but i believe Java is used a lot more since it's truly cross platform (correct me if I'm wrong).
Help and/or advice much appreciated. Thanks TL!
   
|
Any. Really depends on what you are going to do...
Also, if you know OO, you know Java/C#/C++, it is just a matter of learning the syntax.
|
C# is generally managed. If you want to use pointers, you have to enable "unsafe code", which in my experience there is rarely any point (forgive the pun) in doing.
I am also confused by your use of words. If you are looking for a *scripting* language, I don't know if C# and Java would be your best bets. They're both mainly used as programming languages like C++.
C# and Java both have a plethora of things to offer you. Java has the obvious advantage of being cross-platform. As fabiano said, it really depends on what you are going to do. Working to eventually pick up both is probably the best idea, since most of the theory you will learn is applicable to almost any programming language. Learning syntax is a matter of a day or two.
For a detailed list of differences, you should probably check out various online resources. A quick google search pointed me to this page: http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java
|
both c# and java are not what you would call a scripting language.
if you really meant scripting language, then check out Perl, Python or Ruby. if you meant something else and still want to choose between C# and Java, I'd go for C#, since Visual Studio > Eclipse
|
I'd go with Java, i prefer the online resources of Java more than of C# (well hm that's probably not such a fair comparission as I've only picked up C# yersterday lol).
If you know Java, you'll be able to write meaningful code in C# right away. There's hardly any difference although I must say the differences that there are, are quite neat (<3 structs, ref/out, get;set;)
But as AntiLegend has pointed, if you want a scripting language you should look to something else. I hear Python is pretty popular (I've only done perl and php and they're both kinda meh.)
Edit: VS is a nice IDE and probably better than Eclipse but I'm missing auto imports, auto generate setter/getter, auto generate equals and hashcode etc or do I just don't know how to do those in VS?
|
On July 04 2011 08:01 AntiLegend wrote:both c# and java are not what you would call a scripting language. if you really meant scripting language, then check out Perl, Python or Ruby. if you meant something else and still want to choose between C# and Java, I'd go for C#, since Visual Studio > Eclipse 
You were so on target until you had to go after eclipse... instant fail...
Anyway I still agree -- if op is really after a scripting language then I wouldn't go with java or c# either. I am a java programmer so I can't speak as intelligently about the c# side but I would __not__ pick up java if I wanted to run a script. While powerful, java is a pretty verbose.
I've only got to play with it a little bit but python seems like a really slick language. Don't do perl... you'll thank me later.
|
I wouldn't say Java is used a lot more, both are popular programming languages. I'm a professional developer in a financial services company and we mostly use c#, with some Java. I am a little biased towards c# as that is where I spend most of my time. What I can say is that the .NET / C# ecosystem is developing faster due to strong direction by Microsoft, and Java has fallen behind due to the mess that Oracle has brought about.
At the end of the day it depends what you want to do, but if you want to develop purely in the Windows space then I would say go c# for sure.
|
Do neither and go with Python.
I'm familiar with both Java and Python. For any kind of solo / small-scale project or any type of quick prototyping, I'd pick Python. Java just makes you do too much housekeeping, building up the scaffolding only to take it down again when you change your mind.
Python is much slower though, so if speed is an issue, stick to the compiled languages (although there are modules in Python that bring scripts up to C speed).
|
try both. they're syntactically similar languages also to C++ so it's not too hard to play with them
|
On July 04 2011 08:26 StRyKeR wrote: Do neither and go with Python.
I'm familiar with both Java and Python. For any kind of solo / small-scale project or any type of quick prototyping, I'd pick Python. Java just makes you do too much housekeeping, building up the scaffolding only to take it down again when you change your mind.
Python is much slower though, so if speed is an issue, stick to the compiled languages (although there are modules in Python that bring scripts up to C speed).
Seriously, scripting, Python. It's user-friendly, forces you to use whitespace (tabs) and is pretty damn easy.
print "Hello World!"
Is hello world in python.
If you just want to get into high level languages, both Java and C# are good to learn. They're pretty similar, you'd pick either up quickly.
|
Generally learn C if you want to learn bottom up, and the processes behind how coding works.
If you want to get up and running right away, just learn a higher level language like ruby or python. You won't get a deep level understanding, but they're generally more pleasant to jump into. Stay away from php.
Overall, just get really good at one language and understand it- it'll generally be pretty easy to jump to other languages if you're any good.
|
java is pretty bad for writing client programs for windows - no win32 support is bad. so yeah, C# is the way to go, hands down.
|
On July 04 2011 08:01 AntiLegend wrote:both c# and java are not what you would call a scripting language. if you really meant scripting language, then check out Perl, Python or Ruby. if you meant something else and still want to choose between C# and Java, I'd go for C#, since Visual Studio > Eclipse  are you serious sir?
Anyway, I'd recommend Java anyday since it's more used than most programming languages right now.
|
I prefer C# solely because I hate Eclipse with a passion. You'll find both are used a lot, it just depends on what you do and where you work. The syntax for both is pretty similar. If you absolutely had to pick just one, Java is probably the better choice.
|
Go for Scala! It runs on the JVM so it gets the speed benefits of java but has cool things like type inference that make it feel like a scripting language.
|
I agree, Eclipse sucks
I don't like ide's in general, though
|
I prefer C#, I'm a bit of a fanboy when it comes to .NET
I'm competent with both, but tbh I much much much prefer working within Visual Studio compared to Eclipse or any other Java IDE
|
Java and C# are the opposite of scripting languages. They need to be compiled and linked. I'd say the most complete scripting language is Python.
|
I hate eclipse because every time I try to debug something new, I waste 8 hours trying to figure out how to do it.
|
go with haskell, hello world is "Hello World" as simple as that
|
|
oh god that's amazing lool
|
Pure win. I can't believe I decided to start with c++ when I could have been using this all along.
|
Neither C# nor Java are scripting languages, but they both can be used in a similar fashion: making quick, dirty programs. There is absolutely no need for pointers in modern high level, managed, languages: delegates serve the role of function pointers, and references do otherwise. This is a good thing, in the sort of cases where these languages are used, development time is more expensive then processor time, and you don't have to worry about memory management, the run-time does it all for you. This makes it very easy to write stable code.
Once you are used to using these high level languages, it will seem almost painful and silly to use C++. In terms of performance, you do get some advantage out of well written C++, but in the vast majority of cases the performance difference is not a huge concern(the difference is not orders of magnitude in most cases). http://reverseblade.blogspot.com/2009/02/c-versus-c-versus-java-performance.html Shows the benchmarks. Basically over a broad variety of performance benchmarks, on Windows, C++ was about 15% faster then C#, and C# was about 15% faster then Java.
The biggest advantage of C# versus Java is Visual Studio. It is by far the best IDE out there. It is just incredibly simple to make a quick program or web-app with a simple GUI. The auto-complete feature is incredible: it fills in the blanks as you navigate through class libraries, with a contextual help menu, eliminating the need to memorize a ton of apis.
The forms editor structures a template for a GUI app for you, and automatically does all the setup. You can't use this for all applications, but for a lot of simple script-type applications, where you want just simple text boxes and other standard controls, its as easy as drag and drop, then you just fill in the blanks for the various event functions it automatically sets up for you.
|
Now that is pure gold, so funny!
|
On July 04 2011 09:01 xarthaz wrote: java is pretty bad for writing client programs for windows - no win32 support is bad. so yeah, C# is the way to go, hands down.
True but client side programs (in a commercial sense) are pretty much dead. Almost everything is web these days.The last 4-5 clients I've worked with all use Java as the base of their web applications/servers.
Also java supports 32 and 64 bit just fine.. not really sure what you are on about.
I think C# is a cool language but everything it can do Java can do better. Java has more open source 3rd party libraries to choose from and much better online resources. It's also cross platform which gives a huge amount of flexibility.
Client changes their mind on the operating system they are going to use for their servers? No problem. With C# you are screwed.
The only time I use C# is when I'm bored and want to mess around with XNA on my Xbox in my spare time. I never use it for work.
|
On July 04 2011 12:04 vek wrote:Show nested quote +On July 04 2011 09:01 xarthaz wrote: java is pretty bad for writing client programs for windows - no win32 support is bad. so yeah, C# is the way to go, hands down. True but client side programs (in a commercial sense) are pretty much dead. Almost everything is web these days.The last 4-5 clients I've worked with all use Java as the base of their web applications/servers. Also java supports 32 and 64 bit just fine.. not really sure what you are on about. I think C# is a cool language but everything it can do Java can do better. Java has more open source 3rd party libraries to choose from and much better online resources. It's also cross platform which gives a huge amount of flexibility. Client changes their mind on the operating system they are going to use for their servers? No problem. With C# you are screwed. The only time I use C# is when I'm bored and want to mess around with XNA on my Xbox in my spare time. I never use it for work.
C# does a decent job for web apps. It does not have the base built up that Java does yet, but many commercial deployments use it. A big advantage of it is that it has libraries that integrate really nicely into MS-SQL, which in turn integrates well into Windows Domain Services, and IIS which is what most large non web sphere companies are using, especially for intranet. As far as big software sphere companies that are on .net: Blizzard strikes out as the first example to come to mind, all their web pages have the aspx extension.
|
C# is much much much cleaner than Java. And if you learn C#, do yourself a favor and learn LINQ and RX as well.
|
That's a hard choice, but in the end if you are looking into getting in OO, what you will learn in a language will stay valid in the other. It's more about what language feets better to your needs, depending on what you are aiming to develop but since you can do pretty much the same things with c# and java...
On July 04 2011 12:09 InvalidID wrote:+ Show Spoiler +On July 04 2011 12:04 vek wrote:Show nested quote +On July 04 2011 09:01 xarthaz wrote: java is pretty bad for writing client programs for windows - no win32 support is bad. so yeah, C# is the way to go, hands down. True but client side programs (in a commercial sense) are pretty much dead. Almost everything is web these days.The last 4-5 clients I've worked with all use Java as the base of their web applications/servers. Also java supports 32 and 64 bit just fine.. not really sure what you are on about. I think C# is a cool language but everything it can do Java can do better. Java has more open source 3rd party libraries to choose from and much better online resources. It's also cross platform which gives a huge amount of flexibility. Client changes their mind on the operating system they are going to use for their servers? No problem. With C# you are screwed. The only time I use C# is when I'm bored and want to mess around with XNA on my Xbox in my spare time. I never use it for work. C# does a decent job for web apps. It does not have the base built up that Java does yet, but many commercial deployments use it. A big advantage of it is that it integrates really nicely into MS-SQL, which in turn integrates well into Windows Domain Services, and IIS which is what most large non web sphere companies are using, especially for intranet. As far as big software sphere companies that are on .net: Blizzard strikes out as the first example to come to mind, all their web pages have the aspx extension.
I am a webdeveloper and using C# is a treat
|
On July 04 2011 12:11 Marou wrote:That's a hard choice, but in the end if you are looking into getting in OO, what you will learn in a language will stay valid in the other. It's more about what language feets better to your needs, depending on what you are aiming to develop but since you can do pretty much the same things with c# and java... Show nested quote +On July 04 2011 12:09 InvalidID wrote:+ Show Spoiler +On July 04 2011 12:04 vek wrote:Show nested quote +On July 04 2011 09:01 xarthaz wrote: java is pretty bad for writing client programs for windows - no win32 support is bad. so yeah, C# is the way to go, hands down. True but client side programs (in a commercial sense) are pretty much dead. Almost everything is web these days.The last 4-5 clients I've worked with all use Java as the base of their web applications/servers. Also java supports 32 and 64 bit just fine.. not really sure what you are on about. I think C# is a cool language but everything it can do Java can do better. Java has more open source 3rd party libraries to choose from and much better online resources. It's also cross platform which gives a huge amount of flexibility. Client changes their mind on the operating system they are going to use for their servers? No problem. With C# you are screwed. The only time I use C# is when I'm bored and want to mess around with XNA on my Xbox in my spare time. I never use it for work. C# does a decent job for web apps. It does not have the base built up that Java does yet, but many commercial deployments use it. A big advantage of it is that it integrates really nicely into MS-SQL, which in turn integrates well into Windows Domain Services, and IIS which is what most large non web sphere companies are using, especially for intranet. As far as big software sphere companies that are on .net: Blizzard strikes out as the first example to come to mind, all their web pages have the aspx extension. I am a webdeveloper and using C# is a treat
Yes, but outside of the web, anything but C#, or *shutter* VB is abnormal. I write software to control hardware manufacturing and test processes in the aerospace and defense industry, and I have rarely seen Java, or literally anything but MS-SQL/Oracle, tied to a mixture of legacy VB and new .net/LabView apps, used anywhere. I understand this is pretty typical for line of business software. The web based reporting tools are also almost exclusively .net based as it has good libraries for integrating into the Windows servers that most non web companies use for line of business.
On the note of LabView: it is an incredibly interesting language, mainly because it is so different then pretty-much every other language out there. It is graphical, not text-based, and operations occur by default in parallel, unless they need to be done in series, or you specify otherwise. If implemented on multi-core chip, the run-time will automatically distribute it, and if implemented on an FPGA, the run time will actually implement the operations in parallel. It is truly a mindfuck of a language to learn, when coming from serial, text based programming, but you can do some really elegant things with it, especially when writing device drivers/machine controllers. If it was not mind bogglingly slow to run, I would recommend learning it.
|
On July 04 2011 12:11 Marou wrote:That's a hard choice, but in the end if you are looking into getting in OO, what you will learn in a language will stay valid in the other. It's more about what language feets better to your needs, depending on what you are aiming to develop but since you can do pretty much the same things with c# and java... Show nested quote +On July 04 2011 12:09 InvalidID wrote:+ Show Spoiler +On July 04 2011 12:04 vek wrote:Show nested quote +On July 04 2011 09:01 xarthaz wrote: java is pretty bad for writing client programs for windows - no win32 support is bad. so yeah, C# is the way to go, hands down. True but client side programs (in a commercial sense) are pretty much dead. Almost everything is web these days.The last 4-5 clients I've worked with all use Java as the base of their web applications/servers. Also java supports 32 and 64 bit just fine.. not really sure what you are on about. I think C# is a cool language but everything it can do Java can do better. Java has more open source 3rd party libraries to choose from and much better online resources. It's also cross platform which gives a huge amount of flexibility. Client changes their mind on the operating system they are going to use for their servers? No problem. With C# you are screwed. The only time I use C# is when I'm bored and want to mess around with XNA on my Xbox in my spare time. I never use it for work. C# does a decent job for web apps. It does not have the base built up that Java does yet, but many commercial deployments use it. A big advantage of it is that it integrates really nicely into MS-SQL, which in turn integrates well into Windows Domain Services, and IIS which is what most large non web sphere companies are using, especially for intranet. As far as big software sphere companies that are on .net: Blizzard strikes out as the first example to come to mind, all their web pages have the aspx extension. I am a webdeveloper and using C# is a treat
how do u use C to develop a web? just out of curiosity that i learned C as a university course but never did anything very useful with it outside of running simple calculation tasks
|
On July 04 2011 12:23 saltywet wrote:Show nested quote +On July 04 2011 12:11 Marou wrote:That's a hard choice, but in the end if you are looking into getting in OO, what you will learn in a language will stay valid in the other. It's more about what language feets better to your needs, depending on what you are aiming to develop but since you can do pretty much the same things with c# and java... On July 04 2011 12:09 InvalidID wrote:+ Show Spoiler +On July 04 2011 12:04 vek wrote:Show nested quote +On July 04 2011 09:01 xarthaz wrote: java is pretty bad for writing client programs for windows - no win32 support is bad. so yeah, C# is the way to go, hands down. True but client side programs (in a commercial sense) are pretty much dead. Almost everything is web these days.The last 4-5 clients I've worked with all use Java as the base of their web applications/servers. Also java supports 32 and 64 bit just fine.. not really sure what you are on about. I think C# is a cool language but everything it can do Java can do better. Java has more open source 3rd party libraries to choose from and much better online resources. It's also cross platform which gives a huge amount of flexibility. Client changes their mind on the operating system they are going to use for their servers? No problem. With C# you are screwed. The only time I use C# is when I'm bored and want to mess around with XNA on my Xbox in my spare time. I never use it for work. C# does a decent job for web apps. It does not have the base built up that Java does yet, but many commercial deployments use it. A big advantage of it is that it integrates really nicely into MS-SQL, which in turn integrates well into Windows Domain Services, and IIS which is what most large non web sphere companies are using, especially for intranet. As far as big software sphere companies that are on .net: Blizzard strikes out as the first example to come to mind, all their web pages have the aspx extension. I am a webdeveloper and using C# is a treat how do u use C to develop a web? just out of curiosity that i learned C as a university course but never did anything very useful with it outside of running simple calculation tasks C# not C, different languages . Though you could use C to develop a web application, it would be quite the silly and uphill battle, basically you would write the program to generate the full HTML of the webpage, and then configure the web-server to appropriately point to the C application and provide the proper input parameters, using something called CGI.
|
Since both are essentially high-level languages, and one big difference in application is that C# is the main language for winmofo7 apps while Java is the main language for Android apps, I suggest you pick up Java. Totally arbitrary, and I don't have much skill, but I think you should pick Java. In any event, Java has more practicality in general, I think.
|
On July 04 2011 11:48 InvalidID wrote:Neither C# nor Java are scripting languages, but they both can be used in a similar fashion: making quick, dirty programs. There is absolutely no need for pointers in modern high level, managed, languages: delegates serve the role of function pointers, and references do otherwise. This is a good thing, in the sort of cases where these languages are used, development time is more expensive then processor time, and you don't have to worry about memory management, the run-time does it all for you. This makes it very easy to write stable code. Once you are used to using these high level languages, it will seem almost painful and silly to use C++. In terms of performance, you do get some advantage out of well written C++, but in the vast majority of cases the performance difference is not a huge concern(the difference is not orders of magnitude in most cases). http://reverseblade.blogspot.com/2009/02/c-versus-c-versus-java-performance.html Shows the benchmarks. Basically over a broad variety of performance benchmarks, on Windows, C++ was about 15% faster then C#, and C# was about 15% faster then Java. The biggest advantage of C# versus Java is Visual Studio. It is by far the best IDE out there. It is just incredibly simple to make a quick program or web-app with a simple GUI. The auto-complete feature is incredible: it fills in the blanks as you navigate through class libraries, with a contextual help menu, eliminating the need to memorize a ton of apis. The forms editor structures a template for a GUI app for you, and automatically does all the setup. You can't use this for all applications, but for a lot of simple script-type applications, where you want just simple text boxes and other standard controls, its as easy as drag and drop, then you just fill in the blanks for the various event functions it automatically sets up for you.
I've never used Visual Studio; but I'm curious to hear more about its qualities as an IDE. Don't you think ide's/gui's generally slow you down comparatively to command line and vi?
I totally agree with you that higher level languages like Python are generally a much nicer way to dive into programming, but I still think some C knowledge will benefit the intellectually curious who want to know about the processes underlying programming.
|
On July 04 2011 13:20 joban wrote:Show nested quote +On July 04 2011 11:48 InvalidID wrote:Neither C# nor Java are scripting languages, but they both can be used in a similar fashion: making quick, dirty programs. There is absolutely no need for pointers in modern high level, managed, languages: delegates serve the role of function pointers, and references do otherwise. This is a good thing, in the sort of cases where these languages are used, development time is more expensive then processor time, and you don't have to worry about memory management, the run-time does it all for you. This makes it very easy to write stable code. Once you are used to using these high level languages, it will seem almost painful and silly to use C++. In terms of performance, you do get some advantage out of well written C++, but in the vast majority of cases the performance difference is not a huge concern(the difference is not orders of magnitude in most cases). http://reverseblade.blogspot.com/2009/02/c-versus-c-versus-java-performance.html Shows the benchmarks. Basically over a broad variety of performance benchmarks, on Windows, C++ was about 15% faster then C#, and C# was about 15% faster then Java. The biggest advantage of C# versus Java is Visual Studio. It is by far the best IDE out there. It is just incredibly simple to make a quick program or web-app with a simple GUI. The auto-complete feature is incredible: it fills in the blanks as you navigate through class libraries, with a contextual help menu, eliminating the need to memorize a ton of apis. The forms editor structures a template for a GUI app for you, and automatically does all the setup. You can't use this for all applications, but for a lot of simple script-type applications, where you want just simple text boxes and other standard controls, its as easy as drag and drop, then you just fill in the blanks for the various event functions it automatically sets up for you. I've never used Visual Studio; but I'm curious to hear more about its qualities as an IDE. Don't you think ide's/gui's generally slow you down comparatively to command line and vi?I totally agree with you that higher level languages like Python are generally a much nicer way to dive into programming, but I still think some C knowledge will benefit the intellectually curious who want to know about the processes underlying programming.
Only when the ide's don't work as intended. So yes... always.
|
On July 04 2011 13:27 obesechicken13 wrote:Show nested quote +On July 04 2011 13:20 joban wrote:On July 04 2011 11:48 InvalidID wrote:Neither C# nor Java are scripting languages, but they both can be used in a similar fashion: making quick, dirty programs. There is absolutely no need for pointers in modern high level, managed, languages: delegates serve the role of function pointers, and references do otherwise. This is a good thing, in the sort of cases where these languages are used, development time is more expensive then processor time, and you don't have to worry about memory management, the run-time does it all for you. This makes it very easy to write stable code. Once you are used to using these high level languages, it will seem almost painful and silly to use C++. In terms of performance, you do get some advantage out of well written C++, but in the vast majority of cases the performance difference is not a huge concern(the difference is not orders of magnitude in most cases). http://reverseblade.blogspot.com/2009/02/c-versus-c-versus-java-performance.html Shows the benchmarks. Basically over a broad variety of performance benchmarks, on Windows, C++ was about 15% faster then C#, and C# was about 15% faster then Java. The biggest advantage of C# versus Java is Visual Studio. It is by far the best IDE out there. It is just incredibly simple to make a quick program or web-app with a simple GUI. The auto-complete feature is incredible: it fills in the blanks as you navigate through class libraries, with a contextual help menu, eliminating the need to memorize a ton of apis. The forms editor structures a template for a GUI app for you, and automatically does all the setup. You can't use this for all applications, but for a lot of simple script-type applications, where you want just simple text boxes and other standard controls, its as easy as drag and drop, then you just fill in the blanks for the various event functions it automatically sets up for you. I've never used Visual Studio; but I'm curious to hear more about its qualities as an IDE. Don't you think ide's/gui's generally slow you down comparatively to command line and vi?I totally agree with you that higher level languages like Python are generally a much nicer way to dive into programming, but I still think some C knowledge will benefit the intellectually curious who want to know about the processes underlying programming. Only when the ide's don't work as intended. So yes... always.
You obviously work in very different areas of software development then me. The IDE form editor features are significant time savers, for simple gui apps, but you may trade some level of control(though you don't have to give it that control, you can use VS as basically VI with contextual help, and debug integration, if you so choose). You basically can use a graphical editor to design a "form" which is basically a window, or a web page depending on if you are using windows forms or ASP+. You can then graphically assign assorted events to functions, and voila, you have the shell of a UI. It takes about 5 minutes to get a basic windows app setup, far less then manually coding all the controls in, and its visual, so you don't have to twiddle around recompiling a million times to get a simple UI to look the way you want it to. Again, and most importantly, you don't have to use the forms editor if you don't think it gives you the flexibility you want for your app, you can use it just like you use VI/command line with whatever additional features you desire.
When you get into more complex apps, then maybe the forms editor loses its advantage, as you traded some level of control away to have a skeleton UI laid out for you. I have yet to see it pose significant problems, as you can over-ride pretty much anything the IDE does manually.
Contextual help is probably the killer app of VS though. Basically, it provides a popup menu of the MSDN library documentation. For example, if I could not remember the correct function to split a string, typing string. would pop up all the functions under the string class for you to select from(though you can just ignore it and type if you know what you want, its basically like the autocomplete feature of google). It automatically generates the same for any other library you have included. It is implemented very elegantly, and once you get used to it, it is a headache to use anything else, and constantly have to look things up online.
The debug features are also very well implemented, and it seems to save a lot of time. At any given break-point or error, or even run-time point, when you are running your app in debug mode, you can see the values of all variables in the memory of your app. You can do the same with the command line but it is far less elegantly implemented.
VS is probably the main reason that Microsoft is so dominant in the enterprise: it is just an enormous time saver for writing the kind of apps we need to write in the enterprise. These apps don't need super fancy UI functionality, they need stability, simple text boxes/buttons, graphical displays simple UI logic, and low development costs. I am a big supporter of open source, but I have yet to see an open source offering with comparable functionality(though Eclipse is getting better).
|
On July 04 2011 12:09 InvalidID wrote:Show nested quote +On July 04 2011 12:04 vek wrote:On July 04 2011 09:01 xarthaz wrote: java is pretty bad for writing client programs for windows - no win32 support is bad. so yeah, C# is the way to go, hands down. True but client side programs (in a commercial sense) are pretty much dead. Almost everything is web these days.The last 4-5 clients I've worked with all use Java as the base of their web applications/servers. Also java supports 32 and 64 bit just fine.. not really sure what you are on about. I think C# is a cool language but everything it can do Java can do better. Java has more open source 3rd party libraries to choose from and much better online resources. It's also cross platform which gives a huge amount of flexibility. Client changes their mind on the operating system they are going to use for their servers? No problem. With C# you are screwed. The only time I use C# is when I'm bored and want to mess around with XNA on my Xbox in my spare time. I never use it for work. C# does a decent job for web apps. It does not have the base built up that Java does yet, but many commercial deployments use it. A big advantage of it is that it has libraries that integrate really nicely into MS-SQL, which in turn integrates well into Windows Domain Services, and IIS which is what most large non web sphere companies are using, especially for intranet. As far as big software sphere companies that are on .net: Blizzard strikes out as the first example to come to mind, all their web pages have the aspx extension.
Yeah it does a decent job. The thing is I haven't seen very many people use it in the real world. Maybe it's just because Australian businesses are less "Microsoft washed" than in the US. A lot use linux as the OS of choice when it comes to application servers.
This is especially the case as more people move things to the Amazon cloud/similar services. Windows just isn't worth the cost or hassle any more.
That said Windows (with cygwin!) is my OS of choice for development so don't think of me as a Windows or Microsoft hater. All I'm trying to do is let people know what kind of technology real businesses use from my own personal observation.
|
On July 04 2011 14:22 vek wrote:Show nested quote +On July 04 2011 12:09 InvalidID wrote:On July 04 2011 12:04 vek wrote:On July 04 2011 09:01 xarthaz wrote: java is pretty bad for writing client programs for windows - no win32 support is bad. so yeah, C# is the way to go, hands down. True but client side programs (in a commercial sense) are pretty much dead. Almost everything is web these days.The last 4-5 clients I've worked with all use Java as the base of their web applications/servers. Also java supports 32 and 64 bit just fine.. not really sure what you are on about. I think C# is a cool language but everything it can do Java can do better. Java has more open source 3rd party libraries to choose from and much better online resources. It's also cross platform which gives a huge amount of flexibility. Client changes their mind on the operating system they are going to use for their servers? No problem. With C# you are screwed. The only time I use C# is when I'm bored and want to mess around with XNA on my Xbox in my spare time. I never use it for work. C# does a decent job for web apps. It does not have the base built up that Java does yet, but many commercial deployments use it. A big advantage of it is that it has libraries that integrate really nicely into MS-SQL, which in turn integrates well into Windows Domain Services, and IIS which is what most large non web sphere companies are using, especially for intranet. As far as big software sphere companies that are on .net: Blizzard strikes out as the first example to come to mind, all their web pages have the aspx extension. Yeah it does a decent job. The thing is I haven't seen very many people use it in the real world. Maybe it's just because Australian businesses are less "Microsoft washed" than in the US. A lot use linux as the OS of choice when it comes to application servers. This is especially the case as more people move things to the Amazon cloud/similar services. Windows just isn't worth the cost or hassle any more. That said Windows (with cygwin!) is my OS of choice for development so don't think of me as a Windows or Microsoft hater. All I'm trying to do is let people know what kind of technology real businesses use from my own personal observation.
Sure, different industries use different things that are appropriate for their application . Linux and Java have their advantages, but my area of industry(defense and aerospace manufacturing) is pretty-much the polar opposite where pretty-much everything is Microsoft oriented, with very little Linux usage outside of things like SANs or embedded devices, with specific Unix variants used on a lot of the field devices we are manufacturing. I think it has to do with inertia more then anything else, it is fricking expensive to replace everything.
Of course being in the defense/aerospace industry cloud services are not an option, the computers generally cannot simultaneously be physically on the internet and the intranet, for obvious reasons.
|
On July 04 2011 13:49 InvalidID wrote:Show nested quote +On July 04 2011 13:27 obesechicken13 wrote:On July 04 2011 13:20 joban wrote:On July 04 2011 11:48 InvalidID wrote:Neither C# nor Java are scripting languages, but they both can be used in a similar fashion: making quick, dirty programs. There is absolutely no need for pointers in modern high level, managed, languages: delegates serve the role of function pointers, and references do otherwise. This is a good thing, in the sort of cases where these languages are used, development time is more expensive then processor time, and you don't have to worry about memory management, the run-time does it all for you. This makes it very easy to write stable code. Once you are used to using these high level languages, it will seem almost painful and silly to use C++. In terms of performance, you do get some advantage out of well written C++, but in the vast majority of cases the performance difference is not a huge concern(the difference is not orders of magnitude in most cases). http://reverseblade.blogspot.com/2009/02/c-versus-c-versus-java-performance.html Shows the benchmarks. Basically over a broad variety of performance benchmarks, on Windows, C++ was about 15% faster then C#, and C# was about 15% faster then Java. The biggest advantage of C# versus Java is Visual Studio. It is by far the best IDE out there. It is just incredibly simple to make a quick program or web-app with a simple GUI. The auto-complete feature is incredible: it fills in the blanks as you navigate through class libraries, with a contextual help menu, eliminating the need to memorize a ton of apis. The forms editor structures a template for a GUI app for you, and automatically does all the setup. You can't use this for all applications, but for a lot of simple script-type applications, where you want just simple text boxes and other standard controls, its as easy as drag and drop, then you just fill in the blanks for the various event functions it automatically sets up for you. I've never used Visual Studio; but I'm curious to hear more about its qualities as an IDE. Don't you think ide's/gui's generally slow you down comparatively to command line and vi?I totally agree with you that higher level languages like Python are generally a much nicer way to dive into programming, but I still think some C knowledge will benefit the intellectually curious who want to know about the processes underlying programming. Only when the ide's don't work as intended. So yes... always. You obviously work in very different areas of software development then me. The IDE form editor features are significant time savers, for simple gui apps, but you may trade some level of control(though you don't have to give it that control, you can use VS as basically VI with contextual help, and debug integration, if you so choose). You basically can use a graphical editor to design a "form" which is basically a window, or a web page depending on if you are using windows forms or ASP+. You can then graphically assign assorted events to functions, and voila, you have the shell of a UI. It takes about 5 minutes to get a basic windows app setup, far less then manually coding all the controls in, and its visual, so you don't have to twiddle around recompiling a million times to get a simple UI to look the way you want it to. Again, and most importantly, you don't have to use the forms editor if you don't think it gives you the flexibility you want for your app, you can use it just like you use VI/command line with whatever additional features you desire. When you get into more complex apps, then maybe the forms editor loses its advantage, as you traded some level of control away to have a skeleton UI laid out for you. I have yet to see it pose significant problems, as you can over-ride pretty much anything the IDE does manually. Contextual help is probably the killer app of VS though. Basically, it provides a popup menu of the MSDN library documentation. For example, if I could not remember the correct function to split a string, typing string. would pop up all the functions under the string class for you to select from(though you can just ignore it and type if you know what you want, its basically like the autocomplete feature of google). It automatically generates the same for any other library you have included. It is implemented very elegantly, and once you get used to it, it is a headache to use anything else, and constantly have to look things up online. The debug features are also very well implemented, and it seems to save a lot of time. At any given break-point or error, or even run-time point, when you are running your app in debug mode, you can see the values of all variables in the memory of your app. You can do the same with the command line but it is far less elegantly implemented. VS is probably the main reason that Microsoft is so dominant in the enterprise: it is just an enormous time saver for writing the kind of apps we need to write in the enterprise. These apps don't need super fancy UI functionality, they need stability, simple text boxes/buttons, graphical displays simple UI logic, and low development costs. I am a big supporter of open source, but I have yet to see an open source offering with comparable functionality(though Eclipse is getting better). Thank you for this, that was actually really informative. I used to fuck with Textmate, but when I switched to terminal (yes, I use a mac. you'd be surprised at how dominant the mac platform is in silicon valley among consumer internet companies- I know I was) I've haven't looked back- so I don't even know what most IDE's can do.
|
On July 04 2011 14:35 InvalidID wrote:Show nested quote +On July 04 2011 14:22 vek wrote:On July 04 2011 12:09 InvalidID wrote:On July 04 2011 12:04 vek wrote:On July 04 2011 09:01 xarthaz wrote: java is pretty bad for writing client programs for windows - no win32 support is bad. so yeah, C# is the way to go, hands down. True but client side programs (in a commercial sense) are pretty much dead. Almost everything is web these days.The last 4-5 clients I've worked with all use Java as the base of their web applications/servers. Also java supports 32 and 64 bit just fine.. not really sure what you are on about. I think C# is a cool language but everything it can do Java can do better. Java has more open source 3rd party libraries to choose from and much better online resources. It's also cross platform which gives a huge amount of flexibility. Client changes their mind on the operating system they are going to use for their servers? No problem. With C# you are screwed. The only time I use C# is when I'm bored and want to mess around with XNA on my Xbox in my spare time. I never use it for work. C# does a decent job for web apps. It does not have the base built up that Java does yet, but many commercial deployments use it. A big advantage of it is that it has libraries that integrate really nicely into MS-SQL, which in turn integrates well into Windows Domain Services, and IIS which is what most large non web sphere companies are using, especially for intranet. As far as big software sphere companies that are on .net: Blizzard strikes out as the first example to come to mind, all their web pages have the aspx extension. Yeah it does a decent job. The thing is I haven't seen very many people use it in the real world. Maybe it's just because Australian businesses are less "Microsoft washed" than in the US. A lot use linux as the OS of choice when it comes to application servers. This is especially the case as more people move things to the Amazon cloud/similar services. Windows just isn't worth the cost or hassle any more. That said Windows (with cygwin!) is my OS of choice for development so don't think of me as a Windows or Microsoft hater. All I'm trying to do is let people know what kind of technology real businesses use from my own personal observation. Sure, different industries use different things that are appropriate for their application  . Linux and Java have their advantages, but my area of industry(defense and aerospace manufacturing) is pretty-much the polar opposite where pretty-much everything is Microsoft oriented, with very little Linux usage outside of things like SANs or embedded devices, with specific Unix variants used on a lot of the field devices we are manufacturing. I think it has to do with inertia more then anything else, it is fricking expensive to replace everything. Of course being in the defense/aerospace industry cloud services are not an option, a computer cannot simultaneously be physically on the internet and the intranet, for obvious reasons.
Haha yeah that's fair enough. As a comparison though, from what I've heard from friends who have worked there, the ADF uses Filenet fairly heavily. Most of their custom components/applications are Java based running in Websphere/Tomcat.
The only real horror story I have was an old VB 4.0 application a bank was determined to hang on to. It was so buggy and had the worst UI ever. They honestly spent more time and money keeping that thing going than they would have just making it again.
Ah good times.
|
Being a java programmer myself, I can say that there are many companies using this technology. One of the proponents of it (Oracle) also happen to be the major player for databases, so that is something as well. However, there are a lot of C# users, so taking that up would be good as well.
|
On July 04 2011 14:38 joban wrote:Show nested quote +On July 04 2011 13:49 InvalidID wrote:On July 04 2011 13:27 obesechicken13 wrote:On July 04 2011 13:20 joban wrote:On July 04 2011 11:48 InvalidID wrote:Neither C# nor Java are scripting languages, but they both can be used in a similar fashion: making quick, dirty programs. There is absolutely no need for pointers in modern high level, managed, languages: delegates serve the role of function pointers, and references do otherwise. This is a good thing, in the sort of cases where these languages are used, development time is more expensive then processor time, and you don't have to worry about memory management, the run-time does it all for you. This makes it very easy to write stable code. Once you are used to using these high level languages, it will seem almost painful and silly to use C++. In terms of performance, you do get some advantage out of well written C++, but in the vast majority of cases the performance difference is not a huge concern(the difference is not orders of magnitude in most cases). http://reverseblade.blogspot.com/2009/02/c-versus-c-versus-java-performance.html Shows the benchmarks. Basically over a broad variety of performance benchmarks, on Windows, C++ was about 15% faster then C#, and C# was about 15% faster then Java. The biggest advantage of C# versus Java is Visual Studio. It is by far the best IDE out there. It is just incredibly simple to make a quick program or web-app with a simple GUI. The auto-complete feature is incredible: it fills in the blanks as you navigate through class libraries, with a contextual help menu, eliminating the need to memorize a ton of apis. The forms editor structures a template for a GUI app for you, and automatically does all the setup. You can't use this for all applications, but for a lot of simple script-type applications, where you want just simple text boxes and other standard controls, its as easy as drag and drop, then you just fill in the blanks for the various event functions it automatically sets up for you. I've never used Visual Studio; but I'm curious to hear more about its qualities as an IDE. Don't you think ide's/gui's generally slow you down comparatively to command line and vi?I totally agree with you that higher level languages like Python are generally a much nicer way to dive into programming, but I still think some C knowledge will benefit the intellectually curious who want to know about the processes underlying programming. Only when the ide's don't work as intended. So yes... always. You obviously work in very different areas of software development then me. The IDE form editor features are significant time savers, for simple gui apps, but you may trade some level of control(though you don't have to give it that control, you can use VS as basically VI with contextual help, and debug integration, if you so choose). You basically can use a graphical editor to design a "form" which is basically a window, or a web page depending on if you are using windows forms or ASP+. You can then graphically assign assorted events to functions, and voila, you have the shell of a UI. It takes about 5 minutes to get a basic windows app setup, far less then manually coding all the controls in, and its visual, so you don't have to twiddle around recompiling a million times to get a simple UI to look the way you want it to. Again, and most importantly, you don't have to use the forms editor if you don't think it gives you the flexibility you want for your app, you can use it just like you use VI/command line with whatever additional features you desire. When you get into more complex apps, then maybe the forms editor loses its advantage, as you traded some level of control away to have a skeleton UI laid out for you. I have yet to see it pose significant problems, as you can over-ride pretty much anything the IDE does manually. Contextual help is probably the killer app of VS though. Basically, it provides a popup menu of the MSDN library documentation. For example, if I could not remember the correct function to split a string, typing string. would pop up all the functions under the string class for you to select from(though you can just ignore it and type if you know what you want, its basically like the autocomplete feature of google). It automatically generates the same for any other library you have included. It is implemented very elegantly, and once you get used to it, it is a headache to use anything else, and constantly have to look things up online. The debug features are also very well implemented, and it seems to save a lot of time. At any given break-point or error, or even run-time point, when you are running your app in debug mode, you can see the values of all variables in the memory of your app. You can do the same with the command line but it is far less elegantly implemented. VS is probably the main reason that Microsoft is so dominant in the enterprise: it is just an enormous time saver for writing the kind of apps we need to write in the enterprise. These apps don't need super fancy UI functionality, they need stability, simple text boxes/buttons, graphical displays simple UI logic, and low development costs. I am a big supporter of open source, but I have yet to see an open source offering with comparable functionality(though Eclipse is getting better). Thank you for this, that was actually really informative. I used to fuck with Textmate, but when I switched to terminal (yes, I use a mac. you'd be surprised at how dominant the mac platform is in silicon valley among consumer internet companies- I know I was) I've haven't looked back- so I don't even know what most IDE's can do.
I do 99% of my programming work with vim, but i'm really happy when there is some C# development to do for which i can use VS. I've tried a lot of free IDEs, Eclipse, Netbeans, kdevelop, ... but none of those even gets close to what VS has to offer. It was a big factor in my decision to use C# for most of my private projects.
About Java and C#, the only reasons why someone should choose java would be either required portability (though mono does quite a good job for C# except for ASP.NET) or an existing java environment. Java just has a lot of design decisions that don't make a lot of sense (to me) and it fell behind in features, so compared to C# it's just clumsy to code in Java, though i have to admit that it could have changed in the two years that i didn't touch java anymore.
In terms of web development i only did some asp.net stuff, which was ok but not really what i prefer. ASP.NET is ok, it can do quite a lot, but it adds a billion layers which often make it a hell to use. If you are going heavy into web development i suggest either going the PHP route or trying Java (though i have no experience with java web development).
My most recent private web project uses a thin php frontend with a lot of javascript and all the heavy work is done in a C# server (did you know that .NET actually provides a complete embedded webserver? i was suprised when i found that out :p) to which the php frontend connects via TCP/IP. It allows me to use the strengths of each language to it's fullest while i'm still avoiding most of the weaknesses... but it's still a complex solution not suited for beginners who can't differentiate between scripting languages and programming languages 
|
On July 04 2011 14:38 joban wrote:Show nested quote +On July 04 2011 13:49 InvalidID wrote:On July 04 2011 13:27 obesechicken13 wrote:On July 04 2011 13:20 joban wrote:On July 04 2011 11:48 InvalidID wrote:Neither C# nor Java are scripting languages, but they both can be used in a similar fashion: making quick, dirty programs. There is absolutely no need for pointers in modern high level, managed, languages: delegates serve the role of function pointers, and references do otherwise. This is a good thing, in the sort of cases where these languages are used, development time is more expensive then processor time, and you don't have to worry about memory management, the run-time does it all for you. This makes it very easy to write stable code. Once you are used to using these high level languages, it will seem almost painful and silly to use C++. In terms of performance, you do get some advantage out of well written C++, but in the vast majority of cases the performance difference is not a huge concern(the difference is not orders of magnitude in most cases). http://reverseblade.blogspot.com/2009/02/c-versus-c-versus-java-performance.html Shows the benchmarks. Basically over a broad variety of performance benchmarks, on Windows, C++ was about 15% faster then C#, and C# was about 15% faster then Java. The biggest advantage of C# versus Java is Visual Studio. It is by far the best IDE out there. It is just incredibly simple to make a quick program or web-app with a simple GUI. The auto-complete feature is incredible: it fills in the blanks as you navigate through class libraries, with a contextual help menu, eliminating the need to memorize a ton of apis. The forms editor structures a template for a GUI app for you, and automatically does all the setup. You can't use this for all applications, but for a lot of simple script-type applications, where you want just simple text boxes and other standard controls, its as easy as drag and drop, then you just fill in the blanks for the various event functions it automatically sets up for you. I've never used Visual Studio; but I'm curious to hear more about its qualities as an IDE. Don't you think ide's/gui's generally slow you down comparatively to command line and vi?I totally agree with you that higher level languages like Python are generally a much nicer way to dive into programming, but I still think some C knowledge will benefit the intellectually curious who want to know about the processes underlying programming. Only when the ide's don't work as intended. So yes... always. You obviously work in very different areas of software development then me. The IDE form editor features are significant time savers, for simple gui apps, but you may trade some level of control(though you don't have to give it that control, you can use VS as basically VI with contextual help, and debug integration, if you so choose). You basically can use a graphical editor to design a "form" which is basically a window, or a web page depending on if you are using windows forms or ASP+. You can then graphically assign assorted events to functions, and voila, you have the shell of a UI. It takes about 5 minutes to get a basic windows app setup, far less then manually coding all the controls in, and its visual, so you don't have to twiddle around recompiling a million times to get a simple UI to look the way you want it to. Again, and most importantly, you don't have to use the forms editor if you don't think it gives you the flexibility you want for your app, you can use it just like you use VI/command line with whatever additional features you desire. When you get into more complex apps, then maybe the forms editor loses its advantage, as you traded some level of control away to have a skeleton UI laid out for you. I have yet to see it pose significant problems, as you can over-ride pretty much anything the IDE does manually. Contextual help is probably the killer app of VS though. Basically, it provides a popup menu of the MSDN library documentation. For example, if I could not remember the correct function to split a string, typing string. would pop up all the functions under the string class for you to select from(though you can just ignore it and type if you know what you want, its basically like the autocomplete feature of google). It automatically generates the same for any other library you have included. It is implemented very elegantly, and once you get used to it, it is a headache to use anything else, and constantly have to look things up online. The debug features are also very well implemented, and it seems to save a lot of time. At any given break-point or error, or even run-time point, when you are running your app in debug mode, you can see the values of all variables in the memory of your app. You can do the same with the command line but it is far less elegantly implemented. VS is probably the main reason that Microsoft is so dominant in the enterprise: it is just an enormous time saver for writing the kind of apps we need to write in the enterprise. These apps don't need super fancy UI functionality, they need stability, simple text boxes/buttons, graphical displays simple UI logic, and low development costs. I am a big supporter of open source, but I have yet to see an open source offering with comparable functionality(though Eclipse is getting better). Thank you for this, that was actually really informative. I used to fuck with Textmate, but when I switched to terminal (yes, I use a mac. you'd be surprised at how dominant the mac platform is in silicon valley among consumer internet companies- I know I was) I've haven't looked back- so I don't even know what most IDE's can do.
I like writing scripts/php/css/js etc in either Textpad or just through the terminal. I've tried using an IDE for php once and it just got in the way. I agree with you that using an IDE is not always the best solution. I think too many people use Eclipse as a "one size fits all" solution.
That said, using Eclipse for Java development is amazing. You can auto generate so much boring code it really removes a lot of the effort of adding new features. I also love how easy refactoring with Eclipse is and how well it integrates with version control.
|
On July 04 2011 15:07 Morfildur wrote:My most recent private web project uses a thin php frontend with a lot of javascript and all the heavy work is done in a C# server (did you know that .NET actually provides a complete embedded webserver? i was suprised when i found that out :p) to which the php frontend connects via TCP/IP. It allows me to use the strengths of each language to it's fullest while i'm still avoiding most of the weaknesses... but it's still a complex solution not suited for beginners who can't differentiate between scripting languages and programming languages 
Cool. We are doing a very similar thing in project my team is involved with at the moment. We use multiple Java components as the "back end" to do the database and archiving work. We then have PHP (and a lot of ajax) as the "UI layer".
It's a super easy and flexible way of doing things.
Load balancing is also a piece of cake because you can just launch more of which ever component is being hit hard.
A really cool solution though :D
|
On July 04 2011 13:49 InvalidID wrote:Show nested quote +On July 04 2011 13:27 obesechicken13 wrote:On July 04 2011 13:20 joban wrote:On July 04 2011 11:48 InvalidID wrote:Neither C# nor Java are scripting languages, but they both can be used in a similar fashion: making quick, dirty programs. There is absolutely no need for pointers in modern high level, managed, languages: delegates serve the role of function pointers, and references do otherwise. This is a good thing, in the sort of cases where these languages are used, development time is more expensive then processor time, and you don't have to worry about memory management, the run-time does it all for you. This makes it very easy to write stable code. Once you are used to using these high level languages, it will seem almost painful and silly to use C++. In terms of performance, you do get some advantage out of well written C++, but in the vast majority of cases the performance difference is not a huge concern(the difference is not orders of magnitude in most cases). http://reverseblade.blogspot.com/2009/02/c-versus-c-versus-java-performance.html Shows the benchmarks. Basically over a broad variety of performance benchmarks, on Windows, C++ was about 15% faster then C#, and C# was about 15% faster then Java. The biggest advantage of C# versus Java is Visual Studio. It is by far the best IDE out there. It is just incredibly simple to make a quick program or web-app with a simple GUI. The auto-complete feature is incredible: it fills in the blanks as you navigate through class libraries, with a contextual help menu, eliminating the need to memorize a ton of apis. The forms editor structures a template for a GUI app for you, and automatically does all the setup. You can't use this for all applications, but for a lot of simple script-type applications, where you want just simple text boxes and other standard controls, its as easy as drag and drop, then you just fill in the blanks for the various event functions it automatically sets up for you. I've never used Visual Studio; but I'm curious to hear more about its qualities as an IDE. Don't you think ide's/gui's generally slow you down comparatively to command line and vi?I totally agree with you that higher level languages like Python are generally a much nicer way to dive into programming, but I still think some C knowledge will benefit the intellectually curious who want to know about the processes underlying programming. Only when the ide's don't work as intended. So yes... always. You obviously work in very different areas of software development then me. The IDE form editor features are significant time savers, for simple gui apps, but you may trade some level of control(though you don't have to give it that control, you can use VS as basically VI with contextual help, and debug integration, if you so choose). You basically can use a graphical editor to design a "form" which is basically a window, or a web page depending on if you are using windows forms or ASP+. You can then graphically assign assorted events to functions, and voila, you have the shell of a UI. It takes about 5 minutes to get a basic windows app setup, far less then manually coding all the controls in, and its visual, so you don't have to twiddle around recompiling a million times to get a simple UI to look the way you want it to. Again, and most importantly, you don't have to use the forms editor if you don't think it gives you the flexibility you want for your app, you can use it just like you use VI/command line with whatever additional features you desire. When you get into more complex apps, then maybe the forms editor loses its advantage, as you traded some level of control away to have a skeleton UI laid out for you. I have yet to see it pose significant problems, as you can over-ride pretty much anything the IDE does manually. Contextual help is probably the killer app of VS though. Basically, it provides a popup menu of the MSDN library documentation. For example, if I could not remember the correct function to split a string, typing string. would pop up all the functions under the string class for you to select from(though you can just ignore it and type if you know what you want, its basically like the autocomplete feature of google). It automatically generates the same for any other library you have included. It is implemented very elegantly, and once you get used to it, it is a headache to use anything else, and constantly have to look things up online. The debug features are also very well implemented, and it seems to save a lot of time. At any given break-point or error, or even run-time point, when you are running your app in debug mode, you can see the values of all variables in the memory of your app. You can do the same with the command line but it is far less elegantly implemented. VS is probably the main reason that Microsoft is so dominant in the enterprise: it is just an enormous time saver for writing the kind of apps we need to write in the enterprise. These apps don't need super fancy UI functionality, they need stability, simple text boxes/buttons, graphical displays simple UI logic, and low development costs. I am a big supporter of open source, but I have yet to see an open source offering with comparable functionality(though Eclipse is getting better). Yes, you're right. I'm mostly kidding, IDE's are definitely worth the time, but they can also be frustrating to use and sometimes they don't work properly with the shell commands or with debugging servers. It's quite a hassle to get them to work, but that's probably due to inexperience on my part.
|
Thanks for the answers guys. It seems like i managed to cause some confusion with my mistake! I just assumed Java to be a scripting language since I believe programs like Unity use scripts created in Java and/or C#, correct me if I'm wrong but can scripts not be created with java (javascript, although it's not the same thing i guess) or C#? Also it is pretty clear that I am not well versed in the programming world. I just saw that C# had pointers and i guess my mind went "Ooh, I know what that is. gogo!".
I should have been more clear on this but what i want to do with these languages is to first of all learn them and become better at programming and slowly start to try my hand at creating small applets for my web page and maybe even for my phone. Just for fun.
|
On July 04 2011 19:03 pQylling wrote: Thanks for the answers guys. It seems like i managed to cause some confusion with my mistake! I just assumed Java to be a scripting language since I believe programs like Unity use scripts created in Java and/or C#, correct me if I'm wrong but can scripts not be created with java (javascript, although it's not the same thing i guess) or C#? Also it is pretty clear that I am not well versed in the programming world. I just saw that C# had pointers and i guess my mind went "Ooh, I know what that is. gogo!".
I should have been more clear on this but what i want to do with these languages is to first of all learn them and become better at programming and slowly start to try my hand at creating small applets for my web page and maybe even for my phone. Just for fun.
When people mistake java for javascript (or the other way around) i always want to kill someone. Javascript has nothing to do with java at all, it doesn't even have the same programming paradigm (javascript is prototype based, java object oriented).
If you want to develop for the phone it depends on the kind of phone you have. iOS based => objective-c, Android => Java, Windows Mobile => C#
For your website you probably want javascript, which - as i said - has nothing to do with the other languages.
|
On July 04 2011 15:07 Morfildur wrote:
I do 99% of my programming work with vim, but i'm really happy when there is some C# development to do for which i can use VS. I've tried a lot of free IDEs, Eclipse, Netbeans, kdevelop, ... but none of those even gets close to what VS has to offer. It was a big factor in my decision to use C# for most of my private projects.
About Java and C#, the only reasons why someone should choose java would be either required portability (though mono does quite a good job for C# except for ASP.NET) or an existing java environment. Java just has a lot of design decisions that don't make a lot of sense (to me) and it fell behind in features, so compared to C# it's just clumsy to code in Java, though i have to admit that it could have changed in the two years that i didn't touch java anymore.
I think the concept that a lot of people are missing when talking about IDEs, as well as almost every concept in programming, is you need to find the right tool to do the job you are trying to accomplish. I've been surprised by the amount of people saying that why would you use an ide, I just want to use vim, etc...
I have an interesting perspective on this because I do both php dev and also do enterprise java web development - vim, textmate, other text editors are awesome when your code base is small. However, if the IDEs for php didn't suck so bad, I think a lot of people would change their mind as to what they preferred if their code base started getting large.
My companies website runs roughly 1million lines of java code if you trace it all the way from front end to back end. One would be out of their mind if they thought they were not going to use an IDE to do their development. The ability to find where a method is called every where in the source code, move to a method declaration with one key press instead of finding what the object is, finding the class its declared in, and then opening that file saves an incredible amount of time. Other things like automatic compiling and built in maven integration make the IDE imperative for my job, but only because I have all the needs the IDE helps solve.
In terms of web development i only did some asp.net stuff, which was ok but not really what i prefer. ASP.NET is ok, it can do quite a lot, but it adds a billion layers which often make it a hell to use. If you are going heavy into web development i suggest either going the PHP route or trying Java (though i have no experience with java web development).
When deciding which language to use for web development, one needs to ask the same questions. For a simple website the overhead of firing up a tomcat/jetty/jboss/glassfish server with a full jvm is way over the top. Phps ability to just change out files and automatically have your changes in are better for minor tweaks - to accomplish the same thing in java you have to reload an entire webapp ( excluding more advanced techniques ). For larger full blown web applications though - being in a jvm with the support of a framework like struts or stripes makes things quite a bit easier.
My most recent private web project uses a thin php frontend with a lot of javascript and all the heavy work is done in a C# server (did you know that .NET actually provides a complete embedded webserver? i was suprised when i found that out :p) to which the php frontend connects via TCP/IP. It allows me to use the strengths of each language to it's fullest while i'm still avoiding most of the weaknesses... but it's still a complex solution not suited for beginners who can't differentiate between scripting languages and programming languages 
netbeans can do the same thing - it can actually run both embedded tomcat and glassfish servers.
|
On July 04 2011 21:22 berated- wrote:Show nested quote +My most recent private web project uses a thin php frontend with a lot of javascript and all the heavy work is done in a C# server (did you know that .NET actually provides a complete embedded webserver? i was suprised when i found that out :p) to which the php frontend connects via TCP/IP. It allows me to use the strengths of each language to it's fullest while i'm still avoiding most of the weaknesses... but it's still a complex solution not suited for beginners who can't differentiate between scripting languages and programming languages  netbeans can do the same thing - it can actually run both embedded tomcat and glassfish servers.
Thats still the IDE, not the language (or rather framework).
.NET has a full WebServer integrated (it even works with mono). Writing your own Web Server is as simple as writing
HttpListener listener = new HttpListener(); listener.Prefixes.Add("http://localhost:1861/"); listener.Start(); listener.BeginGetContext(request_callback, listener);
It makes some tasks very trivial, in my example i use it in the server to recieve REST-like messages. The whole networking part is in the above 4 lines. For that project I was originally writing standard TCP/IP networking code which spanned quite a few lines and i was very happy when i found out that it's actually that easy (eventhough HTTP is of course slower than just TCP). In the PHP frontend i just use CURL to send and retrieve data, so i don't even need to bother with networking code there.
Anyways, you are definatly right about PHP IDEs, i'd gladly use one (though most of the development is done via SSH on the dev server) if they wouldn't be so horrible. In part it's actually PHPs fault though, or rather a problem in languages with no strict types. If a single variable can have 10 different types in just as many lines it's hard for the IDE to understand which type the variable has at any given point in the code and provide the correct code completion.
Example:
$foo = new TypeA(); if ($something) { $foo = new TypeB(); } elseif ($something_else) { $foo = 3; } $foo->.... what is $foo now?
IDEs in PHP mainly work as shortcut for the manual by providing the prototype for the PHP functions... which you usually can remember anyways after using them a few times.
|
C# just because of LINQ 
Entity Framework is also good. I can't stand the lag on Java IDEs.
|
On July 04 2011 21:50 Morfildur wrote:Show nested quote +On July 04 2011 21:22 berated- wrote:My most recent private web project uses a thin php frontend with a lot of javascript and all the heavy work is done in a C# server (did you know that .NET actually provides a complete embedded webserver? i was suprised when i found that out :p) to which the php frontend connects via TCP/IP. It allows me to use the strengths of each language to it's fullest while i'm still avoiding most of the weaknesses... but it's still a complex solution not suited for beginners who can't differentiate between scripting languages and programming languages  netbeans can do the same thing - it can actually run both embedded tomcat and glassfish servers. Thats still the IDE, not the language (or rather framework). .NET has a full WebServer integrated (it even works with mono). Writing your own Web Server is as simple as writing HttpListener listener = new HttpListener(); listener.Prefixes.Add("http://localhost:1861/"); listener.Start(); listener.BeginGetContext(request_callback, listener);
It makes some tasks very trivial, in my example i use it in the server to recieve REST-like messages. The whole networking part is in the above 4 lines. For that project I was originally writing standard TCP/IP networking code which spanned quite a few lines and i was very happy when i found out that it's actually that easy (eventhough HTTP is of course slower than just TCP). In the PHP frontend i just use CURL to send and retrieve data, so i don't even need to bother with networking code there. Anyways, you are definatly right about PHP IDEs, i'd gladly use one (though most of the development is done via SSH on the dev server) if they wouldn't be so horrible. In part it's actually PHPs fault though, or rather a problem in languages with no strict types. If a single variable can have 10 different types in just as many lines it's hard for the IDE to understand which type the variable has at any given point in the code and provide the correct code completion. Example: $foo = new TypeA(); if ($something) { $foo = new TypeB(); } elseif ($something_else) { $foo = 3; } $foo->.... what is $foo now?
IDEs in PHP mainly work as shortcut for the manual by providing the prototype for the PHP functions... which you usually can remember anyways after using them a few times.
Ahh, I see about what you are saying now with .net - my bad on the mix up there. More than the language though - that's just a good design for realizing that there is reusable code that can be wrapped easily. Kudos to .NET for pulling it into their language.
To stray a little bit, that's actually the main reason I love programming in java and why if the op really had to pick a language out of java/c# for anything other than windows development I'd go with java. The top-level apache projects provide so many reusable libraries from solr/lucene to camel to hadoop to the apache-commons libraries that you can solve almost any project by just integrating them into your own needs. Not reinventing the wheel is pretty sweet.
|
|
|
|