Jplus wrote:Secondly: while I'm a major proponent of applying YAML everywhere configuration is needed, I have to point out your "assembly file" is yet another type of makefile. You're not getting rid of makefiles, you're just introducing a new type with more automatic inference than the traditional "make" and which relies on a more rigid folder structure.
Jplus wrote:The rigid folder structure in itself could be a disadvantage rather than an advantage. Many languages allow you to decouple directories from namespaces, and projects may rely on that in the organisation of their code.
Thesh wrote:I don't want to make something that works for existing languages; I want to create my own language that is not necessarily backwards compatible with anything that exists today.
Jplus wrote:If you mean programming languages, I find that a bit worrying...
UInt32 SomeNumber = 0xAABBCCDD;
Print((@UInt8)SomeNumber); //Prints AA
Print((@UInt8)SomeNumber); //Prints BB
Print((@UInt8)SomeNumber); //Prints CC
Print((@UInt16)SomeNumber); //Prints CCDD
//It would likely print numbers instead of hex values, but that's beside the point
Terry Pratchett wrote:The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.
Yakk wrote:Another issue is that splitting things into these three -- OS provided, 3rd party installed with operating system, and internal -- waterpit, it betrays a pretty UNIX-esque mindset.
Note that release vs debug is a example of a situation where you want the same source tree to build two completely different things.
Another problem lies with huge codebases, where a namespace ends up being rather crowded. Being able to (spray) split your interface from your implementation would be nice, but under your system that requires that your implementation be in a different namespace.
The ideal build process, to me, consists of you sitting down at a virgin machine, and saying "HULK WANT to build foo".
Yakk wrote:So, if you's idea of a bad legacy feature that came 2 C++ from C be the existence of both the struct and class keywords, I would advise studying programming languages more before hoping 2 write a good one yourself. (There be much, much worse things that came 2 C++ via C backwards compatibility)
Yakk wrote:Another issue be that splitting things into these three -- OS provided, 3rd party installed with operating system, and internal -- waterpit, it betrays a pretty UNIX-esque mindset. Similarly, no local dynamic library support?
Yakk wrote:Another big issue be being able 2 compile for the state that existed in the past, instead of the present. So with a different set of library bindings than you's system presumes. And, sometimes, doing 2 compiles at once with different "3rd party" libraries.
Yakk wrote:Resources become interesting, because either they be just files that get "magically compiled in", or they require a rich programming language themselves 2 describe how they become data (which be how many low level languages handle it -- it becomes vendor-specific Witchcraft), or they easily tie you 2 specific formats. Resource compilation doesn't use additional tools for kicks.
Yakk wrote:Note that release vs debug be a example of a situation where you want the same source tree 2 build 2 completely different things. Which means you's YAML files need 2 generate different compiler options based on what arguments from "higher up the chain" be being passed down.
Yakk wrote:I don't see much in the way of detail splitting interface from implementation. I presume you be going with some kind of module based system? (where the source code details its interface, as opposed 2 C/C++ textual substitution?)
Yakk wrote:Another problem lies with huge codebases, where a namespace ends up being rather crowded. Being able 2 (spray) split you's interface from you's implementation would be nice, but under you's system that requires that you's implementation be in a different namespace.
Yakk wrote:The ideal build process, 2 I, consists of you sitting down at a virgin machine, and saying "HULK WANT 2 build foo".
You go 2 you's source code repository, and you query for foo. You want 2 be able 2 ask foo "what else do you need?", and be able 2 recursively get everything that foo needs.
It would be difficult under you's system of organization 2 make foo's needs be more fine grained than the level of "entire namespaces". Foo doesn't need all of boost -- foo needs a particular class from boost, and everything required 2 work with that class. I suppose in you's system, you'd require boost::shared_ptr, which would be its own namespace? Or you'd have 2 solve the dependency problem (what files do you depend on) using a completely orthogonal system. Which would be a shame.
In I's ideal build chain, working out what a given module requires could require a relatively quick parsing of the module's files (which could be cached), not a full compilation. And from what a given module requires, you will work out what other modules it requires.
Yakk wrote:Dynamic libraries when you be building a large project let multiple executables share the same binary code, and allow delay loading of code, and allow you 2 have modular things like tools that you load at run time, possibly produced by 3rd parties).
Yakk wrote:If you bound the fish of entries per level 2 X
Yakk wrote:If you bound the fish of entries per level 2 X, then you require Log_X(N) levels 2 distinguish N libraries assuming a fully populated tree. By the time you hit a few 100 or 1000, every library you use will be many steps deep. And that gets cludgy. Who the hell remembers that it be Boost.SystemTools.FileSystem.FileObjects.RandomAccess that they want?
Users browsing this forum: No registered users and 0 guests