Click here to Skip to main content
15,888,610 members

Survey Results

Are you happy with your main development language(s)?

Survey period: 9 Jan 2017 to 16 Jan 2017

Is your main development language (or languages) a comfy sweater or a chafing yoke?

OptionVotes% 
I love the main language(s) I use in my daily programming63652.30
I'm OK with them39832.73
I neither love nor loathe the main languages I use1109.05
I'm not that happy463.78
I detest with deep passion the language(s) I use151.23
I don't program110.90



 
GeneralC++ is a mistress Pin
KarstenK8-Jan-17 22:49
mveKarstenK8-Jan-17 22:49 
GeneralRe: C++ is a mistress Pin
User 101325469-Jan-17 2:00
User 101325469-Jan-17 2:00 
GeneralRe: C++ is a mistress Pin
den2k889-Jan-17 2:49
professionalden2k889-Jan-17 2:49 
GeneralC++ Pin
den2k888-Jan-17 22:09
professionalden2k888-Jan-17 22:09 
GeneralStill using C# still loving it Pin
Dominic Burford8-Jan-17 20:06
professionalDominic Burford8-Jan-17 20:06 
GeneralRe: Still using C# still loving it Pin
Slacker0078-Jan-17 22:28
professionalSlacker0078-Jan-17 22:28 
GeneralRe: Still using C# still loving it Pin
Herbie Mountjoy10-Jan-17 3:49
professionalHerbie Mountjoy10-Jan-17 3:49 
GeneralRe: Still using C# still loving it Pin
kalberts11-Jan-17 5:54
kalberts11-Jan-17 5:54 
C# being in the "C group" of languages, there are a few things that we have to bear over with. Such as why the ... do you have write all condions in parentheses? The "Algol group", such as Pascal, managed without the parentheses, and you never use them in plain writing. ("If (you're cold), then put on a sweater").
And: Why isn't a single statement a block? In some contexts, I can use either a single statement or a block, but not in other contexts (such as exception handlers).
And the extremely ugly 'try - catch' syntax! Compare to, say, CHILL: Any block follwed by an exception handler (indicated by an ON <exception> keyword) before the semicolon is sufiicient - no need for the try "pre-warning", it is implied by the presence of a handler. No need for (yet) another level of {} ...
But after 30+ years with C-class programming, we have learned to live with it.

C# is the best of the crowd, but still I miss a couple of elements from Pascal: First and foremost array dimensioning and indexing. You cannot make an array indexed from 1950 to 2020, as simple and straightforward as we did in Pascal. You cannot index an array by a non-integer value - enums in particular. Enums are not a fully recognized, distinct type as it was in Pascal; it is really not much more than the old #define spring 0; #define summer 1; ... They still have a lot of "integer properties". But they are not integers, either: You cannot declare an array of four elements indexed by the 'season' enumeration type. It is a pity that when enums where included, that they didn't fully copy the Pascal enum concept.

We can manage with the integer/enum bastard concept, and we have learned to live with numbering elements from zero, but they must be mentioned in a "would have been nice to have" list.

I have a couple more "nice to have": In CHILL, a label doesn't name a point, but a block. A function name is a label on the block implementing the function, but you may label any block in the same way. This allows a clean way of, say, exiting through several nested levels of looping: An OuterLoop: ... which contains a MiddleLoop: ... which in turn contains an InnerLoop:... : The inner loop code can EXIT MiddleLoop; directly without setting flags to be tested etc.

Another flow control mechanism in the "nice to have" list: If you prematurely exit a loop, it ususally represents a different situation from running the loop to the end, and neds a different treatment. So a loop may have two exit paths, distinguishing between these two. One proprietary language providing this ("PLANC") had FOR-loops with such a mechanism:

FOR <iteration specification=""> DO
. ... <loop body="" statements="">
. .... WHILE <condition>; // can we skip out now, is the job done?
. ... <more loop="" body="" statements="">
EXITFOR
. ... <handling of="" loop="" exhaustion="">
EXITWHILE
. ... <handling of="" premature="" exit="">
ENDFOR

No need to set flags, no need to test flags, and the two different exits is semantically witin the loop, with access to e.g. loop local variables.

The only way to understand the great value of these nice-to-have things is to work with them and see how useful they are in large, complex code. Any three-line example is always met with replies "But why couldn't you simply do so-and-so?" - yes, for the super-simple illustration, but not for the complex situations where you really benefit from them.

I guess there is no hope of getting any such mechamisms into neither C# nor any other languages in the C group. I have considered, for my private programming, making a preprocessor that would allow me to use both Pascal type indexing, proper enum handling, labeled blocks and handling of premature loop exits, translating it to dirty gotos to generated labels. For my private use, I could do that, but my employer would never tolerate that kind of "private extensions", even with a preprocessor translating it to plain C#.
GeneralRe: Still using C# still loving it Pin
Dominic Burford11-Jan-17 6:18
professionalDominic Burford11-Jan-17 6:18 
GeneralExcept... Pin
PIEBALDconsult8-Jan-17 18:24
mvePIEBALDconsult8-Jan-17 18:24 
GeneralRe: Except... Pin
dan!sh 8-Jan-17 21:30
professional dan!sh 8-Jan-17 21:30 
GeneralRe: Except... Pin
#realJSOP9-Jan-17 3:17
mve#realJSOP9-Jan-17 3:17 
GeneralRe: Except... Pin
PIEBALDconsult9-Jan-17 4:42
mvePIEBALDconsult9-Jan-17 4:42 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.