Please create an account to participate in the Slashdot moderation system


Forgot your password?

Comment: Re:Java vs. C# amuses me (Score 1) 363

by ndykman (#49744671) Attached to: The Reason For Java's Staying Power: It's Easy To Read

Well, there's some differences that do make C# seem easier and less clunky. They are similar, but not identical, and their differences do matter.

Properties. Yes, Java has getters and setters, but those are methods. C# makes the distinction between a property and method. To be fair, this doesn't really come up until you deal with reflection and more advanced cases, but it is a useful distinction to make.

Generics. Java has type erasure, which has it's issues (you can't do T newThing = default(T) in Java). If look at the lambdas, there's a lot of stuff they have to do around typing to handle primitives versus objects, etc. C# just has a Func and Action types. For APIs that use higher-order functions, this makes things a bit clearer (I want a function that takes a string and returns a bool, for example). Compare this to things like mapToInt in the streams API, and C# is just more consistent and natural in this area.

LINQ. True, Java 8 streams add a lot of this, but they don't expression tree support, which makes things like LINQ to Entities and LINQ to XML, etc. possible. Granted, LINQ has it's own issues (LINQ to Entities code can fire runtime exceptions that LINQ to Objects won't), but this power is really useful. And it requires language and compiler support to transform a lambda to a expression tree versus a closure.

Async/Await. Now, this is newer, but this is a huge difference between C# and Java. Non-blocking code is great, but it can quickly turn into a nest of callback functions. Sure, promises help, but that's a chain of objects. Async/Await provides a much easier to use model that provides many of the benefits of asynchronous programming, but keeping a more synchronous like code base. Scala, JavaScript are all adopting this model because it works well.

In practice, it can be very useful. I was working on ASP .Net MVC 4 project. I bumped it up to five and some improvements. I then just used the asynchronous APIs in MVC, etc. It was a fairly simple change, but boom, less CPU usage and more overhead for concurrent connections. A noticeable gain for little price.

Finally, the libraries do diverge beyond the core. Entity Framework and Hibernate are different. WPF couldn't be more different than Swing, etc, really. Java doesn't have a standard library like Windows Workflow Foundation. And there are Java libraries that C# doesn't really have, of course.

While I agree that Java can get too bad of a reputation, it does show it's age. Also, the JSR process has grind to almost a complete standstill. When C++ gets lambdas before Java, it shows just how slow the process has become.

I think C# embraces newer features much more readily, and that's why some really advocate for it.

Comment: As long as you consider one... (Score 5, Insightful) 423

by ndykman (#49730479) Attached to: Choosing the Right IDE

Moving past a text editor is a big help. Sure, it's good to understand the command line and all that, but having a tool that understands code and allows you to manipulate it is really useful. Refactoring support matters. A lot, actually. Safe delete, rename, extract method/parameter/etc. are all basic tools that can make a code base better. Code completion (intellsense, etc) support matters too. What does this thing do. Does it do what I think it should? Why or why not. Add in things like smart templates, etc. and even the most code aware text editors just look like nothing more than keyword colorers.

Personally, I can't recommend Visual Studio/Resharper or the IntelliJ product line enough. Worth every single penny and then some. JetBrains has a laser like focus on just getting things done. High DPI support was a problem for their IDEs, so instead of waiting on Java 8/2D to catch up, they forked it just to get it work, and they admitted it was not a great solution, but a workaround.

Comment: There's an easy fix... (Score 1) 429

by ndykman (#49642471) Attached to: Why Companies Should Hire Older Developers

For all the worry about age discrimination, H1B abuses, labor violations I've seen here and in other places. There is only one known solution to these issues. Unionization. Until software engineers gain collective bargaining rights, this is all just theory.

It's funny that a group of people that are more than comfortable with changing how people do their work and creating new products. don't think they can make a union work. Sure, they have flaws, but they have advantages as well.

The reason we talk about the 40 hour work week being ignored is because of unions demanding a reasonable amount of time off. Not because some companies that realized it was a good idea. The list goes on. Sure, there's been some really good attempts at rewrite history, but the truth is still there. Unions are an important counterbalance to corporate overreach and abuse.

Comment: Re:Developers, Developer, Developers (Score 1) 125

Not really. Sure, many languages have things like LINQ Select/Where (map/filter), but that's just for objects. It's the expression trees where things get interesting. Expression trees allow a provider to generate a different artifact than a map call over objects. LINQ to Entities creates calls which the Entity Framework turns into SQL.

You can make a custom provider against any data source, really. There is an example of LINQ to Twitter that turns LINQ queries into Twitter API calls (

This feature requires language support, because when an Expression is needed, the compiler needs to turn a lambda (and so on) into a expression tree, not into compiled CLR code in a closure.

To be fair, something similar could be done in other languages with proper support. And writing a LINQ provider is non trivial, but it is possible and in certain cases, it can greatly simplify programming.

Comment: It's Microsoft vs. Google... (Score 4, Interesting) 83

by ndykman (#49433219) Attached to: Patent Case Could Shift Power Balance In Tech Industry

Well, to be fair, it's Microsoft vs. Motorola which was acquired by Google, which still holds the patents. Apple filed a brief in support of Microsoft. The ruling that Apple is support of upholding is that Microsoft only owed a couple of million a year for it's use of those standards in its products.

Motorola sought an amount of four billion a year plus 20 billion in back fees. Google and Qualcomm is arguing the latest ruling was over-reaching, and that they need the ability to charge more. But, given the initial demand, it is clear they want to charge orders of magnitude more for these patents and to seek relief from previous sales. It's pennies versus dollars and that adds up.

And frankly, Google should know better. It's benefited enormously from these technologies being available at a low cost. I know this goes against the Slashdot mindset, but Microsoft is on the right side of the argument here.

Comment: So, this is how bad research can get... (Score 1) 486

by ndykman (#49337895) Attached to: No, It's Not Always Quicker To Do Things In Memory
Awful. So, in a language with immutable strings, building a string like so:

for (int i = 0; i < 1000000; i++) { str += "1"; }

is really slow, but if you use a file buffer like so:

for (int i =0; i < 1000000; i++) { fileBuffer.write("1"); }

it's much faster. Wow. No kidding. Also, note, they don't flush until the end. This is laughable. No wonder CS programs are under attack if this is the kind of thing that people think they can publish.

Comment: Awesome project... (Score 3, Insightful) 35

by ndykman (#49332637) Attached to: MuseScore 2.0 Released

Time to make a donation. It's not really about the application, but what it enables. The sharing of free music scores and transcriptions, enabling a vibrant community of music sharing.

While I respect publishing rights for official scores, the fact is that there is a great set of transcriptions out there. This just helps the community at large.

Comment: Another Andres Hejisberg success story... (Score 1) 91

by ndykman (#49246913) Attached to: Google's Angular 2 Being Built With Microsoft's TypeScript

He really does have the knack for programming language design. I didn't get TypeScript at first, but with 1.4, it clicked. The great news about this is that Angular is a highly visible framework, and with this, more people will look at TypeScript and be willing to use it. Thanks to type definition files and, you can use a ton of JS libraries right now; hopefully, more people will officially maintain these files.

Also, this makes it easier to recommend it's use in work projects. Being able to say: "It's good enough for Angular, it's good enough for us" helps a ton.

fortune: cannot execute. Out of cookies.