News for hackers. Stuff that matters.
Re:Free for students: Professional developer tools from JetB... by 0xCMP on Monday October 31, 2016 @07:54AM (#12835933)
That also includes Reshaper, PyCharm, Webstorm, and CLion. These tools are awesome for students.

Somewhere else mentioned if students really need these kinds of tools? To write code? Probably not, it's better if they spent the time to use Vim/Emacs or just got going with Atom/VSCode/Sublime. But none of those editors support the ease of clicking on something and seeing what that is. A class, a function, etc. Jetbrain's support for this in any language they support is probably the best anywhere and the editor itself is damn good. I try my very best to get rid of it and I always find myself coming back. Rarely can anything match it's features which once you learn how to use them you'll often need on a day to day basis.

Re:Free for students: Professional developer tools from JetB... by wernercd on Monday October 31, 2016 @08:34AM (#12836123)
"it's better if they spent the time to use Vim/Emacs or just got going with Atom/VSCode/Sublime."

It's better learning to use the tools they will need. Period.

The problem is what tools will they need? The tools for Web Dev is different from iOS dev is different from game programming is different from... The tools available on Windows are different from the tools available on Linux... different form the tools on Macs...

I'm sorry, but "real programmers learn to use VIM and bad ones use IDEs" is BS.

Real programmers do what every craft does: Gets the best tools they can get their hands on and learns the in's and out's of them.

Which is why you keep going back to the best tools available. You'd be an idiot not to.

Re:Free for students: Professional developer tools from JetB... by 0xCMP on Monday October 31, 2016 @08:48AM (#12836222)
Never said that. A student should learn the way things actually work. They shouldn't get thrown in to an IDE so teachers don't need to explain the basics of a developer's workflow to them. However, after a period of getting used to things, they should DEFINITELY use an IDE as a tool to expand their understanding since eventually they'd use it to get actual work done.

An editor is MUCH easier to learn the in's and out's of than a full-blown IDE. Start small. Force them to understand. And THEN introduce them to IDEs. Does this happen this way? Not Really. I started with Visual Studio. But I've taught friends this way and it really helps accelerate them past the usual bumps in the road when you're first learning.

Re:Free for students: Professional developer tools from JetB... by wernercd on Monday October 31, 2016 @10:36AM (#12837075)
Learning how things "actually" work is different than learning how to get things done.

There is definitely room for learning how things work "under then hood". Aka algorithm work, creating your own bubble sort, creating your own blog, etc. Those skills get added to your list of tools. Understanding which sort is best for which application... which language... which paradigm.

If you don't learn the different things, you become a programmer that uses a hammer for a solutions - because it's the only tool you know.

Granted, I may have been a bit harsh - it's hard to do sarcasm, tone of voice, etc in text message. So take my post with a grain of salt :)

Re:Free for students: Professional developer tools from JetB... by 0xCMP on Monday October 31, 2016 @11:25AM (#12837600)
Grain of salt taken :)

I've got personal experiences which says IDE-first is a bad approach. However, once you've learn the basics you should definitely graduate to an IDE as a student like you say.

My experience has been that many students don't learn a single thing well enough to build upon to gain those extra tools you mentioned. An IDE might bring them closer to that point faster, but I also think it makes them leave things behind they should know.

(recent graduate, informal teacher to many friends getting in to CS industry)

Re:Free for students: Professional developer tools from JetB... by wernercd on Monday October 31, 2016 @12:20PM (#12838247)
It's definitely a part of getting a well rounded education... but a large part depends on WHAT you are learning.

What's needed to learn C/C++ is different than what's needed to learn Javascript. C#. Ruby. PHP. SQL. Etc...

A Javascript developer could spend his/her life without ever touching a compiler. I've spent my "career" without ever needing that level of knowledge as a .Net Developer (C#/VB) and Sql Reporting guy (SSMS/Crystal Reports/etc).

I would agree wholeheartedly that a C/C++/Assembly guy needs that experience... but most programmers don't need to know how a linker works.

Re:Free for students: Professional developer tools from JetB... by vetinari on Monday October 31, 2016 @11:03AM (#12837361)
> Learning how things "actually" work is different than learning how to get things done.

And that's how you get C++ programmers who don't know, what is a linker and what it does. Their IDE presents them a project organized in a tree and when then press "Build project" button, an exe is on the other end.

Re:Free for students: Professional developer tools from JetB... by wernercd on Monday October 31, 2016 @11:53AM (#12837920)
That's an important point of learning C++... and one I would agree needs to be learned for that level/line of programming.

Does a Web Developer or a LoB developer (which is mainly my pervue) - who is never going to go that deep - need to know linking and header files? That experience is vital for C/C++... but for PHP or Javascript?

I've always meant to learn a little more of C/C++ and maybe even learn some Assembly - but in my years of work I've never personally NEEDED that knowledge to get paid.

As a .Net/C# programmer, I've only touched those lower levels as an educational exercise or many years ago during entry level classes I've since long forgotten.

All of my important work has been in two core places: SSMS (or a couple other database IDEs) and Visual Studio (2005 through "15"). I've never used the command line to build a project - although I know that exists.

Does that make me a bad programmer? I don't think so. That would be a different answer if I was a C/C++ programmer.

Re:Free for students: Professional developer tools from JetB... by Symbiote on Monday October 31, 2016 @02:10PM (#12839393)
> I've never used the command line to build a project

That means you probably couldn't, for example, write a small script that, for each of the last 10 commits, compiles the project and runs the tests -- to see where a bug was introduced.

Re:Free for students: Professional developer tools from JetB... by wernercd on Monday October 31, 2016 @06:34PM (#12841578)
Well, considering my last few jobs don't enforce tests that is a shortcoming of mine I'll admit too freely.

My current job is a new batch of programmers (all at the company less than a year and me the newest) that introduced SVN, a dev environment, Nugets and a build system (Jenkins). Needless to say the code that we are working with involves more WTFs than you can shake a stick at and testing is down the list, unfortunately.

I have no doubt I could figure that sort of system out but it would definitely be a challenge for me. There any good demo's of that sort of setup and learning how to navigate it?

Re:Free for students: Professional developer tools from JetB... by Symbiote on Monday October 31, 2016 @07:43PM (#12841999)
I haven't done any development on Windows for almost 10 years, so I don't have an opinion on Nugets. Git seems more popular than SVN, but SVN is simpler to use. Jenkins is very widely used by Java developers, especially, but works with other languages. At least for Java, it builds on the command-line approach of Maven (a build tool), since it essentially runs commands like "mvn compile" "mvn test" in sequence and reports the result -- exactly as a developer would, either by typing them or pressing a button in the IDE.

Version control, a development environment, dependency management and a build server are all sensible parts of continuous integration (i.e. having automatic builds of the software which run the tests, to avoid introducing new bugs and mean the software is usually in a state where it can be demonstrated to the boss, or released). "Continuous Integration" (book [1]) is a good general guide, which helped me explain what the benefit of these tools would be to a reluctant team in a previous job.

-

I have sat near to developers using Windows, and I think the typical Linux (especially) "command line first" approach has significant benefits for any developer. Some one-off problems can be solved very quickly, and the solution is usually repeatable and can be automated.

Last week's issue was ~10000 identifiers, of which about 10 were known to cause an error in our REST API. The logging wasn't sufficient, but it was easy to make the read-only API call with every identifier:

I began with a single identifier:

  curl -Ss http://api.example.org/get/1234
(retrieves the content of the URL)

Then made the test:

  curl -Ss http://api.example.org/get/1234 | grep SUCCESS || echo "Problem with record 1234"
(finds any line containing "SUCCESS", returns true if found, false otherwise)

Then saw that I could read my identifiers (in reality, they were output from another command rather than read from a file):

  for i in $( cat identifiers ) ; do
    echo $i
  done
Then tied it all together:

  for i in $( cat identifiers ) ; do
    curl -Ss http://api.example.org/get/$i | grep SUCCESS || echo "Problem with record $i"
  done
Of course, this could be done in many languages (even Excel), but it's hard to beat shell script for development speed, and with the bug fixed we don't need to run this check again.

Last month, it was which of 100,000 ZIP archives contains invalid TSV data (wrong number of columns, should be 50)

  for i in *.zip; do
    unzip -p $i output.tsv | tr -d -c $'\t\n' | awk '{ print length }' | grep -v '^50$' && echo "$i corrupt"
  done
(i.e. unpack only output.tsv, discard everything that isn't a tab or newline, print each line's length, then look for lines that aren't "50" and report.)

It's not the tool for everything: I wouldn't try and process XML, and CSV files with quoted commas would be better handled with a proper library, but hopefully that's an idea of some strengths.

For the specific task I mentioned (finding the bad commit), semi-pseudocode is

  for c in $( svn print-out-last-10-commit-identifiers-from [repository] ); do
    svn checkout --revision $c [repository] $c
    cd $c
    mvn compile test || break
  done
[1] https://books.google.dk/books/about/Continuous_Integration.h...
Re:Free for students: Professional developer tools from JetB... by vetinari on Monday October 31, 2016 @06:26PM (#12841536)
The linking was just an example (although important for those who generate native binaries). With java or c# there are other, but similar low-level issues that the programmer should be aware, because they can affect the deployment. The typical example may be a 3rd-party library or SDK you are using was compiled with the same library as you are using, just with different version. Maybe even the runtime you are using supplies some version too (think a Java application server like JBoss, your .ear containing your app with dependencies and one of those dependencies is a third-party jar with the same-but-different lib). Even in PHP or JavaScript you can end up with dependency hell, solving which is miles away from organizing your files in the IDE and necessity to know how things work under the hood.
Re:Free for students: Professional developer tools from JetB... by dagw on Monday October 31, 2016 @12:01PM (#12838025)
I really think it should be the other way around, at least in a computer science program. Start them in an as easy environment as possible where they can spend their time learning programming concepts and computer science rather than fighting archaic tools.

Once they're comfortable with programming and understand the basic concepts, then you can step back and explain exactly how to set up a build environment and write a Makefile and all other workflow steps needed to get something that can actually run.

Re:Free for students: Professional developer tools from JetB... by Symbiote on Monday October 31, 2016 @02:17PM (#12839459)
Having been a tutorial assistant for novice first year computer scientists: the text editor is the easy environment, assuming the lab computers have all been set up correctly with the necessary tools.

The instructions given to students were to use something like gedit, and "javac" and "java". This rarely caused problems, but the students who tried to use Eclipse were more likely to get stuck operating it, or else distracted by it.

Re:Free for students: Professional developer tools from JetB... by laacz on Monday October 31, 2016 @04:14PM (#12840512)
Actually, tools are not that different across platforms as long as you write code, use version control and so on. As per topic - if you chose any of JetBrains product as your IDE of choice, it's cross platform (linux/windows/osx). And everything else you need from web stack is cross platform. If it's not (looking at you, windows), you can always go for ubuntu on windows via WSL, which is somewhat flawed with a few annoying bugs, but it'll come around.
Re:Free for students: Professional developer tools from JetB... by Roboprog on Monday October 31, 2016 @11:55AM (#12837950)
Or, use an IDE and vim. (vim plugin)

The vim plugin is a good extension. You get all the automated viewing / searching / generation (if need be), plus the "hands planted on the keyboard" few-key-strokes low level editing.

E.g. - the "yank" (y) and "put" (p) command combos are nice for quickly rearranging a few small things - yank (N) word(s), yank (N) line(s), move a bit (N words/lines), put chunk in new place.

Re:Free for students: Professional developer tools from JetB... by wernercd on Monday October 31, 2016 @12:22PM (#12838264)
I haven't had to use VIM in awhile, but knowing the shortcuts is important and makes you MUCH more productive...

My current hat is .Net and I haven't touched VIM - or the bash prompt - in almost a year.

Re:Free for students: Professional developer tools from JetB... by Roboprog on Tuesday November 01, 2016 @11:08AM (#12846261)
No vim plugin for VS? I haven't used VS in about 10 years.
Re:Free for students: Professional developer tools from JetB... by spapas82 on Monday October 31, 2016 @08:12AM (#12836017)
For Java I'd say yes, students do need an IDE (or to be more specific their life would be very difficult without an IDE). It is really difficult to write java, even trivial programs without an IDE (because of Java's long package and class names).

Since IntelliJ Studio is the defacto standard in Java IDEs (having surpassed Eclipse and Netbeans) I think that it is really great for students to be able use that IDE for their student projects.

Of course the usage of the IDE must not prevent then from familiaring themselves with classpaths and compiling a Java program with more than one packages through the command line!

Re:Free for students: Professional developer tools from JetB... by triplebit on Monday October 31, 2016 @10:46AM (#12837181)
> Since IntelliJ Studio is the defacto standard in Java IDEs (having surpassed Eclipse and Netbeans)

Incorrect. Eclipse remains superior and is in far greater use across the world and the enterprise landscape.

Re:Free for students: Professional developer tools from JetB... by AnthonBerg on Monday October 31, 2016 @11:40AM (#12837764)
Having also used Eclipse, I strongly disagree about its superiority; If it is popular, then I believe that is explained by its price and the self-sustaining property of ubiquity.

I myself found Eclipse cumbersome and lacking in capacity. I do respect others' preference for it, but it cannot be said to be objectively superior.

Re:Free for students: Professional developer tools from JetB... by Roboprog on Monday October 31, 2016 @11:59AM (#12838006)
Agreed. Started with Eclipse, then Netbeans, now IntelliJ. Cumbersome seems like a good description for Eclipse.

I love the ease with which you can reconfigure the layout from task to task with IntelliJ. "Distraction Free" mode shows that they "get" what bugs many people about IDEs sucking up screen space for very little in some cases.

Re:Free for students: Professional developer tools from JetB... by reitanqild on Monday October 31, 2016 @02:29PM (#12839595)
As someone who grew up in my Java career on Eclipse, have had a paid IntelliJ license and then started using Netbeans despite all warnings against it I strongly encourage everyone to at least try Netbeans on their own.

Main benefits:

- The whole thing is free. No pro or enterprise version. (That said this isn't cheapness on my side: I can have an IntelliJ license any day I ask my boss as he is an incurable fan. For me it is enough to fix his IntelliJ once in a while. ;-)

- Happily uses Maven poms as project models. No more problems with out of sync IDE configs. What builds on the build server is exactly what I see in the Project view.

- Standard keybindings follows modern OS conventions and you can switch to Eclipse or IntelliJ keybindings in options if you want.

- Doesn't scare noobs the way eclipse does. Not a problem for me, I used to love eclipse, but for a team lead this might be an advantage.

Re:Free for students: Professional developer tools from JetB... by 0xCMP on Monday October 31, 2016 @08:50AM (#12836231)
I mostly do Python and Node (usually all in PyCharm), but I agree for Java it's nice to have an editor.