Jump to content

  • Log In with Google      Sign In   
  • Create Account

Banner advertising on our site currently available from just $5!


1. Learn about the promo. 2. Sign up for GDNet+. 3. Set up your advert!


What do you want in your development tools?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
17 replies to this topic

#1 ApochPiQ   Moderators   -  Reputation: 18028

Like
5Likes
Like

Posted 13 January 2014 - 02:55 PM

I've spent a lot of time recently thinking about things I want my programming tools to do. Some of these things are just improvements to existing concepts, and some are entire categories of functionality that don't exist in common toolkits. (To be honest, though, most of the ideas are implemented out there, just not popular or widely available.)

Fileless code organization
I'd love to stop thinking about my code in units of files. Give me a way to arbitrarily group code, maybe index it in several different ways, and I'll be much happier. I want to be able to organize on my own axes that don't always overlap with file divisions.

Semantic version control
Kind of in line with the above, I'm tired of version control that's just text-based. I want my revision history to understand that I moved a function from one module to another, or renamed a couple of variables, or whatever. Just thinking of programs as text is too limiting.

Better REPLs
The idea of a REPL (Read Eval Print Loop) is old and well-tested, but I'd like a GUI-based version. Smalltalk is the closest thing I know of to my ideal, wherein I can build arbitrarily complex data structures and run arbitrary code on them. Imagine a system where you can build entire test cases of data using a simple visual editor to lay out the data structures, and then feed that data into a module to get instant unit testing.

Better contracts
I hate the way I have to specify interfaces and contracts in most languages. More accurately, I hate the way that interfaces are everything and contracts are second-class citizens. Aspect-oriented programming is almost a step in the right direction, but most implementations are really clunky and verbose. Why can't I just say something simple, like "this function never returns null", and get automatic optimizations and sanity checks from my compiler?

Responsiveness
Visual Studio is a hog, and the other IDEs I've used are all worse. I want something slim and fast, so I can get all my coding goodness at a reasonable pace. Taking two minutes to load a project that comprises only a few dozen KB of XML on disk is just stupid.



So that's my wishlist. What's yours look like?

Sponsor:

#2 L. Spiro   Crossbones+   -  Reputation: 20869

Like
6Likes
Like

Posted 13 January 2014 - 03:05 PM

Taking two minutes to load a project that comprises only a few dozen KB of XML on disk is just stupid.

That’s just Visual Studio 2010.  The rest aren’t terribly fast, but not 2 minutes slow.
 
 
In Xcode you can drag a folder into the project and it will add all files recurvisely and create an internal folder tree to match that of the disk.
I would like to see this in Visual Studio.  I’m getting tired of having to manually create groups in Visual Studio and then drag the headers into the Headers section and the .cpp files into the Source section manually and separately.
Come on Visual Studio!  Just let me drag a folder into the project and you recreate the folder tree and put all the headers over there and the source files over there.
 
 
L. Spiro


Edited by L. Spiro, 13 January 2014 - 03:05 PM.


#3 Icebone1000   Members   -  Reputation: 1342

Like
4Likes
Like

Posted 13 January 2014 - 03:38 PM

id like to document my code without having to adhere to something ugly like doxygen formatting..something like a built in functionality on your ide that reads your code, creates a template and let you select and tag any comments to make it appear correctly on the documentation.



#4 Servant of the Lord   Crossbones+   -  Reputation: 26079

Like
4Likes
Like

Posted 13 January 2014 - 04:33 PM

Coming from a C++ background, separate class interface from implementation. Automatically pre-declare what it makes sense to predeclare, and include what it makes sense to include.

Bread-crumb style Project->Module/Namespace->Class->Function navigation in the IDE.

IDE built-in documentation. The rich-text documentation description for a function is visible and editable right above where the function itself is is visible and editable. Includes embedding images (for graphs and graphical demonstrations of GUI appearances or blend modes), tables, things like that.

7i7i.png4ruw.png

As soon as I stop typing, I want the program to invisibly and automatically start recompiling the single file-fragment that changed. If it fails, fail silently (and put a little red "not compilable" icon next to that file-fragment's link). I might go and change other pieces of code... but if project compiling was spread out while still working on code, and while moving the mouse pointer about the gui, and when every piece of code compiles fine, automatically and invisibly begin the final linking step, by the time I finally click "Run", the compile should already be a good step along, improving productivity.

Obviously this isn't as big a deal for large projects that take hours to compile, but it helps smaller projects that only have (incremental) compile times less than 10 minutes.


It's perfectly fine to abbreviate my username to 'Servant' rather than copy+pasting it all the time.
All glory be to the Man at the right hand... On David's throne the King will reign, and the Government will rest upon His shoulders. All the earth will see the salvation of God.
Of Stranger Flames - [indie turn-based rpg set in a para-historical French colony] | Indie RPG development journal | [Fly with me on Twitter


#5 Paradigm Shifter   Crossbones+   -  Reputation: 5642

Like
0Likes
Like

Posted 13 January 2014 - 04:58 PM

That's what makes the editor chug though. I want responsiveness when I am typing not "please wait" thinking about tings while I'm trying to type code.


"Most people think, great God will come from the sky, take away everything, and make everybody feel high" - Bob Marley

#6 Hodgman   Moderators   -  Reputation: 40900

Like
3Likes
Like

Posted 13 January 2014 - 05:02 PM

Regarding the Semantic version control, i know a few engines that use JSON for level data/etc, and have written 3-way merge tools that understand JSON, which can then be plugged into existing version control tools to enable semantic version control within a text-based system.

If you had a sensible way to "serialize" your code/project to a structured format like JSON, you could do the same thing. This fits in perfectly with the Fileless code organization idea wink.png

 

The LightTable IDE has some nice features that hopefully will be emulated by others soon laugh.png



#7 Ravyne   GDNet+   -  Reputation: 11178

Like
1Likes
Like

Posted 13 January 2014 - 06:22 PM

There was some great stuff in Bret Victor's Inventing on Principle presentation that used coding to demonstrate some concepts. The gist was that having "live code" allows rapid exploration, refinement, and discovery of both the problem and design space. It might be kind of out there, and perhaps a lot to lay the groundwork for, but in a lot of ways, what he shows strikes me as a thoroughly modern REPL.

 

Coding Horror's Jeff Atwood had some things to say about it.


Edited by Ravyne, 13 January 2014 - 06:26 PM.

throw table_exception("(ノ ゜Д゜)ノ ︵ ┻━┻");


#8 ddn3   Members   -  Reputation: 1458

Like
1Likes
Like

Posted 13 January 2014 - 09:26 PM

My wish list :

 

-unlimited version control : version control which can handle unbounded branch management and code variations on a complete system wide level. Can guarantee 100% stateful restoration of code and support classes and platform, allowing for unfettered experimentation and code sharing. 

 

-smart code auto-generator : using advance AI heuristics analyze user code library and does code auto-complete not at a basic syntax level but higher level. 

 

-meta everything : all code, support tools, interfaces, api are meta-tag and allowed for meta-analysis and offline refactoring.

 

-runtime visualization tools : advance visualization routines allow user to see allocation, process, information flow, higher order logic, etc.. of their program in action.

 

-smart syntax coloring : just better versions of what we have now

 

-ddn



#9 phantom   Members   -  Reputation: 8939

Like
3Likes
Like

Posted 14 January 2014 - 01:22 AM

Debugging experiance.

Most other things I can live with or work around but if debugging is a pain then I tend to get very stabby about life in general. While not perfect VS seems to get this right (mostly anyway, Android guys were complaining yesterday about having to look at memory as the watch window wasn't sane, but that's just Android dev all over it seems).

#10 MorleyDev   Members   -  Reputation: 111

Like
0Likes
Like

Posted 14 January 2014 - 12:59 PM

In the IDE? Extract Variable, Extract Method, Extract Class, Inline Variable, Inline Method, Rename, Change Namespace

 

When the IDE provides comprehensive refactoring tools like that, the speed gains in development are exponential and not having those tools at hand soon feels like a chore in comparison.


Edited by MorleyDev, 14 January 2014 - 01:00 PM.


#11 Alessio1989   Members   -  Reputation: 2953

Like
0Likes
Like

Posted 14 January 2014 - 02:03 PM

A decent refactoring tool, no more tab as n-spaces as default, a decent formatter.. You know, make readable the code of someone else with just a pair of click...



#12 AzureBlaze   Members   -  Reputation: 1646

Like
0Likes
Like

Posted 14 January 2014 - 08:44 PM


In Xcode you can drag a folder into the project and it will add all files recurvisely and create an internal folder tree to match that of the disk.
I would like to see this in Visual Studio. I’m getting tired of having to manually create groups in Visual Studio and then drag the headers into the Headers section and the .cpp files into the Source section manually and separately.
Come on Visual Studio! Just let me drag a folder into the project and you recreate the folder tree and put all the headers over there and the source files over there.

 

For this there is a "Show all files" button in the solution explorer that will display the tree with actual folder structure. You can also include/exclude files in the project, or add items directly to some folder in this mode. I think the default mode is hardly useful, but this mode is somehow "well hidden".



#13 Scarabus2   Members   -  Reputation: 556

Like
1Likes
Like

Posted 15 January 2014 - 03:13 AM

A debugger that:

  • Works.
  • Doesn't lie to me.
  • Presents variable content in a legible manner.
  • Knows about STL.

Basically the VS debugger.


Edited by Scarabus2, 15 January 2014 - 03:15 AM.

visualnovelty.com - Novelty - Visual novel maker

#14 ericrrichards22   GDNet+   -  Reputation: 1355

Like
0Likes
Like

Posted 15 January 2014 - 08:51 PM

Some of the things I love about doing C# in VS 2013:

  • Resharper: Good refactoring tools are the best.  It's very liberating to be able to easily extract functions, rename variables and transform code without breaking everything and doing tedious find and replace by hand.
  • Nuget: Beats the pants off trying to integrate third-party libraries by hand.
  • VS Graphics Debugger: It's not perfect, but it's pretty handy to get dumps of per-pixel history, as well as being able to see all of the textures in memory.  

Eric Richards

SlimDX tutorials - http://www.richardssoftware.net/

Twitter - @EricRichards22


#15 dmatter   Crossbones+   -  Reputation: 3544

Like
1Likes
Like

Posted 17 January 2014 - 06:16 AM

Better contracts
I hate the way I have to specify interfaces and contracts in most languages. More accurately, I hate the way that interfaces are everything and contracts are second-class citizens. Aspect-oriented programming is almost a step in the right direction, but most implementations are really clunky and verbose. Why can't I just say something simple, like "this function never returns null", and get automatic optimizations and sanity checks from my compiler?

 

I mostly find myself despairing at programming languages themselves, so this one would definitely be on my list. Except rather than opting out of nulls, why on earth isn't it something to opt-in for?! Like Haskell's Maybe type (I actually feel OO languages should be drawing more inspiration from functional languages than they currently seem to be doing; lambdas are not enough tongue.png).

 

Similarly constness by default would be nice, with a compiler able to recognise and optimise usage of fully immutable objects.

Also, a class should be able to implement an interface in terms of a member variable using a one-liner; NOT being forced to actually implement a trivial pass-through for each method in that interface. Composition is definitely better than inheritance, but languages don't half make it difficult.

Algebraic types.

Pattern matching with support for structure decomposition and implicit casting to subtype.

Multiple dispatch.

 

Slap 'em into any mainstream language and that would be great, thanks biggrin.png


Edited by dmatter, 17 January 2014 - 06:17 AM.


#16 ApochPiQ   Moderators   -  Reputation: 18028

Like
1Likes
Like

Posted 17 January 2014 - 02:10 PM

You should check out Epoch. Sounds like it would really scratch your itch :-)



#17 Paradigm Shifter   Crossbones+   -  Reputation: 5642

Like
6Likes
Like

Posted 17 January 2014 - 02:27 PM

You should check out Epoch. Sounds like it would really scratch your itch :-)

 

Have you got a C interop module called Epoch-C resin?


"Most people think, great God will come from the sky, take away everything, and make everybody feel high" - Bob Marley

#18 ApochPiQ   Moderators   -  Reputation: 18028

Like
0Likes
Like

Posted 17 January 2014 - 02:30 PM

Ugh. :-P






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS