[erlang-questions] Preloaded modules "lists" dependency

Björn-Egil Dahlberg egil@REDACTED
Tue Feb 18 14:00:59 CET 2014


On 2014-02-17 21:15, Thomas Lindgren wrote:
>
> "The "OTP2" part interests me a lot more. One of my favorite ideas is to
> be able to define the whole supervision tree in a single module, and to
> have it feature more complex components like pools for example. It could
> come with a default pool implementation, with a well defined interface
> (from the point of view of the supervision tree) that allows it to be
> replaced with whichever one you want. So instead of having 10 modules
> describing your application, it could all be in a very visual format ..."

I think these kind of enhancements is the ones that should be researched 
and written about.

I would like to see either an extensive blog article, a white paper or 
an EUC / Factory presentation on different approaches or extensions to 
the existing OTP principals. I don't want to see code. I want to see how 
it would fit together, described using small words and visual aids.

// Björn-Egil

>
>
> On Monday, February 17, 2014 3:43 PM, Loïc Hoguin <essen@REDACTED> 
> wrote:
>
>     Thoughts and ideas are not worth a lot until they are tested so I
>     will
>     spare you most details for now. It's still a pretty long read.
>
>     For the "Erlang2" part, there isn't much to say. Erlang is a language
>     that is almost perfect. My conclusions about improving it are that
>     there
>     are very few things that can be improved, and they are mostly edge
>     cases
>     (shadowing would be a big one, and not being able to do (<<
>     B:Len/binary, _/bits >>, Len) in a function clause would be another -
>     but the latter is going to be solved soon as I gather). The rest
>     of it,
>     well, I came pretty much to the same conclusions as Joe, the only
>     thing
>     I would add is a basic form of metaprogramming. Basically you want
>     to be
>     able to do two things: compute some data at compile time, and run
>     tests
>     at compile time (and fail to compile if the tests fail). Optionally
>     would allow you to do some conditional builds to work around
>     issues with
>     a specific version of Erlang. But no macros or other weird stuff that
>     just make the code more complex for no good reasons.
>
>     I'm no language expert and I'm not too interested in this part so
>     don't
>     expect anything from me on that point. If I ever attempt something it
>     would just be a very basic wrapper on top of the current Erlang
>     syntax
>     to allow for compile-time stuff to happen (meaning: outside
>     functions,
>     and perhaps even outside modules entirely).
>
>     The "OTP2" part interests me a lot more. One of my favorite ideas
>     is to
>     be able to define the whole supervision tree in a single module,
>     and to
>     have it feature more complex components like pools for example. It
>     could
>     come with a default pool implementation, with a well defined
>     interface
>     (from the point of view of the supervision tree) that allows it to be
>     replaced with whichever one you want. So instead of having 10 modules
>     describing your application, it could all be in a very visual
>     format in
>     a single module.
>
>     I'm more interested in doing an "OTP2" that targets a different
>     use than
>     long running server applications though. As you might already know, I
>     like video games, and I have tried a few quick prototypes of games
>     with
>     Erlang. I think there is a lot of potential, but the barrier of
>     entry is
>     very high. An "OTP2" geared toward games would help greatly. Games
>     typically have a main loop. There's basically no way around that
>     today
>     because most graphic APIs aren't thread safe. SDL2 was released
>     not too
>     long ago for example, and it still isn't thread safe. But that's
>     not a
>     big problem, Erlang's concurrency can still play a big part. For
>     example, by making the lists module parallelize processing of the
>     list
>     automatically past a certain threshold. Or providing efficient timer
>     capabilities (because the timer module ain't it). And the
>     processes that
>     access the API can always be tied to scheduler 0 to avoid any issues.
>
>     I started playing around making an SDL2 NIF this week-end. The first
>     thing you instantly win is not having to worry about freeing
>     resources
>     (with a few gotchas of course, you can only have so much in
>     memory). The
>     GC does it for you! The second thing you instantly win is Erlang's
>     pattern matching. The article I wrote about matching tic tac toe
>     solutions directly instead of trying to write an algorithm is a good
>     example of that. The code becomes small and clear and you can
>     focus on
>     actually building the game.
>
>     Of course, for anything to come out of these experiments, I have
>     to find
>     a way to not get bored, which may prove difficult. Time will tell.
>
>     On 02/17/2014 01:30 PM, Pierre Fenoll wrote:
>     > Hey Loïc,
>     >
>     > I don't mean to hijack the thread.
>     > Can we have more information on "Erlang2/OTP2"? Your guidelines and
>     > back-of-a-napkin experiments interest me greatly.
>     >
>     >
>     > Cheers,
>     >
>     >
>     >
>     > _______________________________________________
>     > erlang-questions mailing list
>     > erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
>     > http://erlang.org/mailman/listinfo/erlang-questions
>     >
>
>     -- 
>     Loïc Hoguin
>     http://ninenines.eu <http://ninenines.eu/>
>
>     _______________________________________________
>     erlang-questions mailing list
>     erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
>     http://erlang.org/mailman/listinfo/erlang-questions
>
>
>
> Take a look at this: https://github.com/thomasl/gen_app
>
> Here is one application I just started:
>
>   1> gen_app:app_sup(om, [{sup, {sup, om, [om_ets_owner, 
> om_repository_server, om_code_server]}).
>
> Which starts a (dynamic) application 'om' with a supervisor 'om' 
> handling three gen_servers on localhost.
>
> Caveats: Somewhat inelegant notation so far, and you still need 
> 'application' for the more complex cases. No pool handling at the 
> moment either. But it's pretty compact.
>
> Best,
> Thomas
>
> PS. Apologies to those I've written to recently -- Yahoo is acting up, 
> perhaps due to THE HUGE THREADS we're having, so I'm having some 
> trouble reading my mail at the moment. Sporadically hanging client, etc.
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20140218/b9e3757a/attachment.htm>


More information about the erlang-questions mailing list