   I think I'm fighting C++ too much
  Okay, to start off, I''m a C/Java/Python person.  I think they''re all very clean languages that have minor flaws.  C doesn''t lend itself to OOP, Java takes too much work to integrate with other languages (Python, C), and Python is slow.  So obviously, C++ should be my answer.Except C++ hates me and I hate it.  I want to fix this and I think my problem is that C++ doesn''t do the expected thing to me.Just some examples:iterators - Why do I need two?  Do I really need two?  The stroustup book uses two all the time.  Why not hasNext() and next()?vector - pop doesn''t return the object being popped.  Also, why no pop_front()?  Why isn''t += and -= overloaded?  So many little things that seem so poorly designed.docs - Is the SGI page really the best STL documentation out there?  It''s unreadable.  Anything Javadoc-like?filenames - I''ve heard the reason the STL avoids .h''s is that C++ was supposed to somehow platform agnostic.  If true, that''s the most retarded reason I''ve ever heard.  Every language I can think of uses extensions for libraries.using namespace std - Another STL oddity.  There are probably only a few namespaces being used at any one point, why can''t the compiler assume the obvious and barf only if a name lookup is ambiguous?... and so onBasically, the STL seems so messed up but C++ seems so good.  It almost makes me want to write my own library but then, there''d be bugs, it''d be non-standard, and while the STL offers only headaches for me, Boost is awesome (Boost:ython!!!). 
  If you wanna, go ahead and try to write your own library. It''d be a great programming experience I would think.   R.I.P. Mark OsbackSolo Pa Mi GenteVG-Force;quote:Original post by Ekim_Gram  If you wanna, go ahead and try to write your own library. It''d be a great programming experience I would think.I don''t think it''d be that new an experience for me.  It''d just be a lot of coding and while the interface would be cleaner (IMHO), there''d be inevitable bugs in places.  The benefits barely outweigh the costs so I''m on the fence about giving the big F U to all other C++ programmers who would have to work with my stuff.;  If you find the speed of java programs acceptable, then you might give C# a try. Most comparisons I see show C# to be anywhere from slightly faster than java to a hair slower than C++. C# has some really cool things in it. ;  I don''t have much time but lets look at your post:quote:iterators - Why do I need two? Do I really need two? The stroustup book uses two all the time. Why not hasNext() and next()?Uh, two iterators? I don''t follow at all and I iterate over STL collections with my eyes closed.quote:vector - pop doesn''t return the object being popped. Also, why no pop_front()? Why isn''t += and -= overloaded? So many little things that seem so poorly designed.pop is really a stack operation, but even there it doesn''t do it. Not sure why this is the case.quote:filenames - I''ve heard the reason the STL avoids .h''s is that C++ was supposed to somehow platform agnostic. If true, that''s the most retarded reason I''ve ever heard. Every language I can think of uses extensions for libraries.No, it is simply to emphasize that they are C++ headers, wrapped in namespace std. There is an iostream.h, but it is an old-style header.quote:using namespace std - Another STL oddity. There are probably only a few namespaces being used at any one point, why can''t the compiler assume the obvious and barf only if a name lookup is ambiguous?From what I gather, namespace resolution is not as simple as it would appear. C++ is exacting, and qualifying namespaces is no exception. Although it would make life easier I''m not sure it would match the language ''philosophy'' (of pain and torture, I mean, )quote:the STL seems so messed upThe STL is beautiful for what it is, but you appear to be quabbling over surface level issues and semantics. Only the pop comment had any real value in my mind and that is subjective. ;quote:Original post by Russell  If you find the speed of java programs acceptable, then you might give C# a try. Most comparisons I see show C# to be anywhere from slightly faster than java to a hair slower than C++. C# has some really cool things in it.   Yeah but I''m a Linux geek so I''m bound by law to avoid MS related stuff.Seriously though, I''m thinking of looking into it.  Mono seems to be doing well now and my main concern would be access to C/C++ libraries with little to no hassle while having a clean language.  Basically, a much much faster version of Python would be awesome.;  Most benchmarks that have been shown in the seemingly infinite C# threads, put C# at 95-98% the speed of C++ code. On Longhorn, managed code will be ''native'' so to speak. This means you can expect to see C# running significantly faster than C++ or Java, with the obvious exception of low-level non managed C/C++ code for stuff such as drivers.I would also recommend picking up C#. The STL seems a bit ironic in that it is meant to be one of the base figures in OO development, yet the STL is implemented in a fashion that would make OO fans cry. Blind ney sayers of goto should look at the skillful uses for it in the STL implementation included with visual studio 6. Everything has its use. ;quote:Original post by antareus  I don''t have much time but lets look at your post:Uh, two iterators? I don''t follow at all and I iterate over STL collections with my eyes closed.pop is really a stack operation, but even there it doesn''t do it. Not sure why this is the case.No, it is simply to emphasize that they are C++ headers, wrapped in namespace std. There is an iostream.h, but it is an old-style header.From what I gather, namespace resolution is not as simple as it would appear. C++ is exacting, and qualifying namespaces is no exception. Although it would make life easier I''m not sure it would match the language ''philosophy'' (of pain and torture, I mean, )The STL is beautiful for what it is, but you appear to be quabbling over surface level issues and semantics. Only the pop comment had any real value in my mind and that is subjective.The two iterator''s thing is:  while (iter != vec.end()) iter++;  So is this wrong or what?The value of a library directly proportional to the quality of the interface.  While vector seems to have all the required functionality, it''s a royal pain in the ass to use.  += means "add to" and would be the first thing I''d try with a vector class but it''s not there.  Instead we have "push_back()" and "insert(iterator, T t)".  Since insert requires an iterator and is obviously meant for more than trivial stuff, we''re left with "add()" and "append()", oops, I mean "push_back()".  The obvious complement is "pop_back()".If having no extension somehow shows it''s C++, I''d really love to see the reasoning behind that.  "Take away important information means it will tell you more.";quote:Original post by Kadesh  Seriously though, I''m thinking of looking into it.  Mono seems to be doing well now  Out of curiosity, are the other implementations such as Mono also implementing features such as Windows Forms? I am not sure if this is part of the standard or is MS IP. It would be awesome to have such portability.  ;quote:Original post by Kadesh  vector - pop doesn''t return the object being popped.  Also, why no pop_front()?  Why isn''t += and -= overloaded?  So many little things that seem so poorly designed.Write your own container on top of std::vector that does these things, or write global operators for operator+=() and operator-=(). It shouldn''t take more than a couple of minutes. 