Greetings.

On Wed, 17 Sep 2014 06:29:01 +0200 Maxime Coste <frrr...@gmail.com> wrote:
> On Tue, Sep 16, 2014 at 11:02:40PM +0200, Christoph Lohmann wrote:
> > This is programming and not your playground. Avoid fancy code.
> 
> I guess that is a matter of taste, I just know m1 + m2 calls 
> operator+(Matrix, Matrix).

Which is, like in other answers stated, not obvious. You have to look up
the definition to read the source. Hint: Here complexity in  the  system
can be avoided completely.

> > Suckless is about writing simple code bases. When your choice for C++ is
> > because you want to write complex code bases then you are in  the  wrong
> > community and should leave as fast as you can.
> > 
> > By adding constraints on the hidden complexity it is by cause made hard‐
> > er to write useless abstraction code.
> 
> You cannot always simplify the problem to keep a simple solution, sometimes 
> the
> problem *is* complex. I put safe guards in the code, especially when the have
> zero cost in release, because I have debugged enough clever C like code to
> prefer a compilation error or an assert failing as soon as possible to a long
> session in gdb.

Look  at the suckless tools. If you really start from the beginning with
the intention to write complex code you will end up with  complex  code.
Split  the  problems  up in tools: The Unix Philosophy. This is not your
commercial environment where you can’t afford to publish subsets  before
you take tons of money from clients buying licenses from resellers, giv‐
ing nearly no support.

> > > > No generic is a feature. Generic are very stupid idea that only creates
> > > > blown binaries (this is one of the point I don't like about C11). Also,
> > > > the compexity of generics in a lenguage with automatic conversions
> > > > like C (and C++) is too much. 
> > > 
> > > what is silly is rewriting the same function with different arguments 
> > > again
> > > and again. Or ending up relying on macros to emulate generics.
> > 
> > Learn to code in C.
> 
> What is your strategy in C when you need to apply the same logic on different 
> types ?

That  doesn’t  happen  that  often to justify overloading. Hint: Avoided
complexity in the system *beforehand*.

> > > Get your complexity right, inserting in a dynamic array is O(n), the 
> > > eventual
> > > need for an allocation is amortized (whereas you always end up doing a 
> > > malloc
> > > for your linked lists). Another thing you should look up is modern cpu
> > > architectures and caches, in practice the much better locality of 
> > > reference
> > > of arrays makes them *way* better on operation like insert/erase in the 
> > > middle
> > > than lists even though complexity theory says otherwise. (Remember, 
> > > complexities
> > > are asymptotic, you need huuuuuge number of elements).
> > 
> > When  you  work  close to the metal much of your theory can be optimized
> > out. I won’t tell you how.
> 
> The best you can do is store your linked list in an array, and sort it at 
> certain
> point so that elements end up linearly in memory. But when you've done that 
> you
> already have a dynamic array implementation.

No,  the  best  is to apply whichever data structure you need at the mo‐
ment.  Discussing which array to use makes no sense without  the  actual
problem defined.

> > No,  civilisation  ended  when »C++« was mentioned. Code abstraction and
> > bad design choices made from idiots relying on OOP are  the  reason  why
> > your  local  Windows machine is so slow in loading drivers, opening Win‐
> > dows, loading the help file in the regular Java NULL  pointer  exception
> > or simply loading and displaying text in a webbrowser.
> > This can only be avoided by changing and restricting the system.
> 
> I blame that on .net... More seriously, yep there is a lot of ugly C++ out
> there, and OOP nonsense, I've seen my share of extra deep class hierarchies
> with virtual methods everywhere. That code might have been written in C++,
> but its very far from idiomatic, modern C++. The ioccc tends to show that
> C is far from imune from unintelligile code. 

You  are  too young, if you think .NET is the problem. The problem arose
before that with C++ in the Windows world and X11  in  Unix.  Let’s  see
which wrong logic answer you will apply to the last argument.

Conclusion: You try to force your work experience into the suckless phi‐
losophy, which does not work due to different basic principles. Next you
are  fail  to accept that reading source code in Open Source is more im‐
portant than your abstraction of reusing code between hating and  oppor‐
tunity‐seeking  programmer  groups  in corporate lifes. Please come down
from your throne.



Sincerely,

Christoph Lohmann


Reply via email to