00:14:01 | * | FreezerburnV quit (Quit: FreezerburnV) |
00:16:55 | * | gattuso joined #nimrod |
00:17:15 | * | gattuso left #nimrod ("Once you know what it is you want to be true, instinct is a very useful device for enabling you to know that it is") |
00:17:41 | * | askatasuna quit (Ping timeout: 260 seconds) |
00:21:37 | * | nhunzaker joined #nimrod |
00:25:56 | * | darkf joined #nimrod |
00:28:53 | * | flaviu quit (Ping timeout: 240 seconds) |
00:35:08 | * | nhunzaker quit (Read error: No route to host) |
00:35:15 | * | nhunzake` joined #nimrod |
00:39:45 | * | dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
00:39:50 | * | rpag quit (Ping timeout: 250 seconds) |
00:45:50 | * | dapz joined #nimrod |
00:47:25 | * | flaviu joined #nimrod |
00:49:42 | * | nhunzake` quit (Ping timeout: 255 seconds) |
00:50:12 | * | dapz quit (Ping timeout: 244 seconds) |
00:50:17 | * | FreezerburnV joined #nimrod |
00:57:38 | * | nhunzake` joined #nimrod |
00:57:47 | * | nhunzake` quit (Remote host closed the connection) |
01:03:30 | * | rpag joined #nimrod |
01:09:33 | * | quasinoxen quit (Read error: Connection reset by peer) |
01:36:06 | * | quasinoxen joined #nimrod |
01:36:18 | * | quasinoxen quit (Client Quit) |
01:50:07 | * | superfunc__ joined #nimrod |
02:01:11 | * | saml_ joined #nimrod |
02:18:16 | * | flaviu quit (Ping timeout: 255 seconds) |
02:32:03 | * | superfunc__ quit (Quit: Page closed) |
02:38:41 | * | quasinoxen joined #nimrod |
02:56:58 | * | Joe_knock quit (Quit: Leaving) |
03:00:41 | * | superfunc__ joined #nimrod |
03:03:20 | * | superfunc__ quit (Client Quit) |
03:10:29 | * | vezzy joined #nimrod |
03:11:15 | * | zahary quit (Read error: Connection reset by peer) |
03:11:26 | * | quasinoxen quit (Ping timeout: 272 seconds) |
03:11:36 | * | zahary joined #nimrod |
03:17:59 | * | askatasuna joined #nimrod |
03:26:14 | * | vezzy quit (Ping timeout: 250 seconds) |
03:29:07 | * | FreezerburnV quit (Quit: FreezerburnV) |
03:29:27 | * | quasinoxen joined #nimrod |
03:31:54 | * | saml_ quit (Quit: Leaving) |
03:47:32 | * | askatasuna quit (Ping timeout: 272 seconds) |
04:06:14 | * | kshlm joined #nimrod |
04:13:28 | * | ARCADIVS joined #nimrod |
04:50:19 | * | superfunc__ joined #nimrod |
05:06:39 | Varriount | Gah. Anyone here hve experience programmatically interacting with the windows explorer shell? |
05:23:24 | * | kshlm quit (Quit: Konversation terminated!) |
05:25:40 | * | kshlm joined #nimrod |
05:30:21 | * | Demos quit (Read error: Connection reset by peer) |
05:39:46 | * | superfunc__ quit (Ping timeout: 246 seconds) |
05:40:05 | * | nande quit (Read error: Connection reset by peer) |
05:42:41 | * | bjz joined #nimrod |
06:12:32 | * | gokr_ joined #nimrod |
06:13:42 | * | gokr quit (Ping timeout: 246 seconds) |
06:17:23 | fowl | gokr1, you might be interested in import_repo https://gist.github.com/fowlmouth/8cc9ee26bcf509b5fea5 |
06:35:09 | * | khmm joined #nimrod |
06:38:15 | * | khmm_ joined #nimrod |
06:38:48 | * | kshlm quit (Remote host closed the connection) |
06:39:03 | * | kshlm joined #nimrod |
06:39:58 | * | kshlm quit (Client Quit) |
06:40:14 | * | kshlm joined #nimrod |
06:40:20 | * | khmm quit (Remote host closed the connection) |
06:42:15 | * | gokr_ quit (Ping timeout: 258 seconds) |
06:42:53 | * | gokr_ joined #nimrod |
06:43:14 | * | kaushal_ joined #nimrod |
06:43:15 | * | kshlm quit (Remote host closed the connection) |
06:58:31 | * | kaushal_ is now known as kshlm |
06:59:08 | * | kshlm quit (Quit: Konversation terminated!) |
06:59:28 | * | kshlm joined #nimrod |
07:04:47 | * | khmm_ quit (Remote host closed the connection) |
07:04:51 | * | khmm joined #nimrod |
07:40:11 | * | Trustable joined #nimrod |
08:40:57 | gokr1 | fowl: Slick |
08:41:21 | gokr1 | I am playing with debugging. |
08:42:06 | gokr1 | KDevelop debugs quite fine, but of course the data pane is.. screwed up :) |
08:42:17 | gokr1 | gdb of course, same. |
08:48:43 | gokr1 | The endb works, although I lack "list" (trivial to add) and ... of course, data exploring or eval (seems ... very limited :)) doesn't seem to be much implemented. |
08:50:17 | gokr1 | So I was wondering... I guess improving endb (adding a "machine" interface to it so Aporia can talk to it more easily?) in various ways is the path for Aporia and any other IDE made for Nim specifically. |
08:50:50 | gokr1 | Another thing that may be interesting is exploring the GDB pretty printers via Python. |
08:51:39 | gokr1 | From what I can see - breakpoints and stepping, line tracking etc works quite well - both in endb and gdb. |
08:52:01 | gokr1 | The thing making it really useful is exploring memory though. |
08:54:47 | gokr1 | Ah, the doc for endb actually explains what the eval can do, ok. |
09:49:04 | * | ARCADIVS quit (Quit: ARCADIVS) |
10:17:46 | * | kshlm quit (Quit: Konversation terminated!) |
10:20:59 | gokr1 | So "insane" idea: Whip up a Python pretty printer module for GDB - but let Python call a Nimrod library (trivial I presume) to do the actual pretty printing. |
10:21:47 | gokr1 | I am slightly unsure of how that API works, but if we can get GDB to print things "pretty" then... it percolates to all the other IDEs using GDB. |
10:22:08 | * | kshlm joined #nimrod |
10:27:41 | * | kshlm quit (Quit: Konversation terminated!) |
10:28:00 | * | kshlm joined #nimrod |
10:28:08 | * | kshlm quit (Client Quit) |
10:28:25 | * | kshlm joined #nimrod |
10:37:46 | * | kshlm quit (Ping timeout: 255 seconds) |
10:43:43 | * | gokr joined #nimrod |
10:46:21 | * | gokr_ quit (Ping timeout: 246 seconds) |
10:57:19 | * | kshlm joined #nimrod |
11:37:24 | * | Jesin quit (*.net *.split) |
11:37:25 | * | wan quit (*.net *.split) |
11:37:25 | * | milosn_ quit (*.net *.split) |
11:37:41 | * | milosn joined #nimrod |
11:37:53 | * | Jesin joined #nimrod |
11:37:53 | * | wan joined #nimrod |
11:39:17 | * | hsuh quit (Remote host closed the connection) |
11:42:50 | * | gokr quit (Ping timeout: 250 seconds) |
11:43:30 | * | hsuh joined #nimrod |
12:02:52 | * | gokr joined #nimrod |
12:05:37 | * | FreezerburnV joined #nimrod |
12:05:49 | * | gokr quit (Read error: Connection reset by peer) |
12:06:01 | * | gokr joined #nimrod |
12:16:39 | * | gokr_ joined #nimrod |
12:18:25 | * | dom96_ joined #nimrod |
12:18:59 | * | gokr quit (Ping timeout: 245 seconds) |
12:19:14 | dom96_ | Araq: This is why we need the module name in type mismatch errors. |
12:19:32 | dom96_ | ajitsingh's problem is that he is importing sockets not the net module. |
12:19:41 | dom96_ | So the Port type is wrong. |
12:22:51 | * | khmm quit (Remote host closed the connection) |
12:28:58 | * | darkf quit (Quit: Leaving) |
12:44:32 | * | FreezerburnV quit (Quit: FreezerburnV) |
12:51:19 | gokr1 | Aha |
12:52:14 | gokr1 | dom96_: If I want to hack together a "proof of concept" socket server, should I use the lib/httpserver.nim codebase - and typically be on bigbreak for that? |
12:52:38 | dom96_ | you should use asynchttpserver |
12:52:44 | gokr1 | Its not for serious use "yet", so its fine if its a bit unstable - just as long as it runs in some sense of the word :) |
12:52:54 | gokr1 | Ok, in bigbreak? |
12:52:56 | dom96_ | yes |
12:53:08 | gokr1 | Cool. Lots of good stuff you have done btw. |
12:53:43 | gokr1 | Curious - what debugger do you use ? I presume you use Aporia as editor. |
12:54:00 | dom96_ | I just use echo. |
12:54:30 | gokr1 | ok. I wrote a bit about debugging here ... earlier today. About perhaps looking at GDB pretty printers |
12:54:52 | dom96_ | yeah, that would be nice. It would also be cool if we could integrate gdb with Aporia. |
12:55:03 | gokr1 | I tried out GDB plain, ENDB, KDevelop and Veminer. All works basically fine. |
12:55:46 | gokr1 | Nemiver I mean. |
12:55:52 | gokr1 | Damn hard name to remember. |
12:56:18 | gokr1 | You don't think its "better" to use ENDB with Aporia? |
12:56:23 | gokr1 | Or at least simpler :) |
12:56:45 | dom96_ | nemiver looks cool |
12:56:47 | dom96_ | never heard of it |
12:57:02 | dom96_ | AFAIK ENDB isn't maintained anymore. |
12:57:04 | dom96_ | bbl |
12:57:08 | * | dom96_ left #nimrod (#nimrod) |
13:01:55 | gokr1 | Araq: Are we dropping ENDB or? |
13:02:07 | gokr1 | Just curious. It does work fine on devel at least. |
13:03:06 | gokr1 | I would presume its much easier to smoothly integrate with say Idetools and Aporia etc - since we can make a simple protocol between them. |
13:05:32 | gokr1 | Hehe, now I have four different Nimrods. 0.9.6 from zip, Nimrod.devel, Nimrod master, and Nimrod.bigbreak :) |
13:08:29 | * | askatasuna joined #nimrod |
13:14:01 | * | Demos joined #nimrod |
13:14:21 | Demos | did I tell you guys about that XL2 language I found? |
13:18:14 | gokr_ | yeah ;) |
13:24:16 | gokr1 | Demos: You did the... VS plugin or? |
13:24:58 | Demos | well yeah I did do the VS plugin, I have not had time to work on it now that school has started, but it does its job. I use it |
13:25:13 | gokr1 | Does it also debug? |
13:25:37 | gokr1 | Or is it mainly completion and syntax highlight, and jump to definition? |
13:33:07 | gokr1 | Regarding GDB pretty printing I blabbered about, interesting article: http://yosoygames.com.ar/wp/2013/12/gdb-pretty-printers-for-ogre-simd-datatypes/ |
13:33:41 | Demos | it does debug |
13:34:15 | Demos | although the way I start the debugger is with a batch script embedded in the project XML file (better than figuring out how MSproj XML files work) |
13:34:16 | gokr1 | And is it the same problem there - I mean, breakpoints and stepping works fine - but variables look like crap? (of course) :) |
13:34:20 | * | untitaker quit (Ping timeout: 258 seconds) |
13:34:59 | Demos | yeah, I mean nim does try not to rename variables but it sometimes fails, I would love more compiler support for tooling but someone actually has to do that, and I dont think anyone has time at the moment |
13:35:27 | Demos | the bigger problem is that the nim code tends to have more scopes than the C, which is annoying |
13:35:28 | gokr1 | Yeah, there is something called GDB pretty printers that I think might be worth some dev time. |
13:35:40 | Demos | hmm, maybe |
13:36:01 | Demos | I could never get those to work with c++ containers, but maybe I just did not have the proper scripts installed |
13:36:11 | gokr1 | Ah. |
13:36:33 | Demos | I was trying to get em to work on my school's multiuser linux system though |
13:36:35 | Demos | so who knows |
13:36:53 | gokr1 | I wonder how IDEs talk to gdb, via some hysterically complicated protocol I presume? |
13:39:30 | * | untitaker joined #nimrod |
13:42:58 | Demos | yup |
13:43:06 | Demos | one of the motivations for LLDB |
13:43:10 | gokr1 | Just looking at it :) |
13:43:15 | gokr1 | But it... doesn't seem that bad. |
13:43:25 | Demos | and I have noticed most IDEs that use gdb do not work that well debugging wise |
13:43:41 | gokr1 | I am a long spoiled Smalltalker. |
13:43:57 | gokr1 | Where shit like this just works - and extremely well. |
13:43:59 | Demos | so there is some special interface that emacs uses, and I think using it means the IDE must be GPL |
13:44:06 | Demos | or somesuch bullshit |
13:44:08 | gokr1 | Ah. |
13:44:19 | gokr1 | But the mi2 seems to be a simple readable line by line protocol. |
13:44:45 | Demos | maybe it is not so bad, but I just never had much luck with IDEs that are not VS |
13:45:01 | gokr1 | Ab, but ok... the "variable" stuff seems complex. |
13:46:05 | * | khmm joined #nimrod |
13:53:59 | * | khmm quit (Ping timeout: 245 seconds) |
13:58:12 | * | khmm joined #nimrod |
14:06:23 | * | khmm quit (Ping timeout: 244 seconds) |
14:09:41 | * | Fran__ quit (Ping timeout: 260 seconds) |
14:10:09 | * | Fran__ joined #nimrod |
14:10:17 | * | prosper_ joined #nimrod |
14:17:13 | * | prosper_ quit (Ping timeout: 260 seconds) |
14:22:51 | * | prosper_ joined #nimrod |
14:30:45 | * | Demos quit (Read error: Connection reset by peer) |
14:31:39 | * | Demos joined #nimrod |
14:36:37 | * | superfunc__ joined #nimrod |
14:37:22 | * | johnsoft quit (Ping timeout: 245 seconds) |
14:38:12 | * | johnsoft joined #nimrod |
14:45:33 | * | superfunc__ quit (Quit: Page closed) |
14:53:28 | * | prosper_ quit (Read error: Connection reset by peer) |
14:54:01 | * | prosper_ joined #nimrod |
15:00:01 | Araq | Demos: I had some discussions with XL's inventor via email ;-) |
15:00:46 | Demos | oh! I noticed that it had a lot of similarities with nimrid, and it looked pretty cool |
15:00:56 | Araq | his "only 8 different kind of nodes" is too weird though. makes AST transformations too complex |
15:01:54 | Demos | hm, it has real variadic generics :> |
15:01:57 | Araq | afaict his later language designs evolved into something very different |
15:10:55 | Araq | gokr1: well there is 1 bug in the codegen wrt ENDB and nobody uses it, so I'd like to abandon it |
15:11:30 | gokr1 | Ok, got it. I did look at the mi2 interpreter thingy in GDB. Most stuff didn't look too hard - but the variables... phew. |
15:11:48 | Araq | the variables are not hard either |
15:12:04 | gokr1 | Oh :) I just fell asleep when I started reading about it. |
15:12:19 | Araq | btw 'resXY' comes from the inlining of iterators |
15:13:57 | gokr1 | Ah... ok. So that's why it couldn't be found by objdump etc? |
15:14:15 | Araq | quite likely |
15:14:27 | Araq | however, we can patch the codegen to make that mapping easier |
15:14:37 | gokr1 | But anyway, KDevelop was quite nice. |
15:15:04 | gokr1 | Found an article about pretty printers too, but it seems pretty... unstable for most IDEs. |
15:15:33 | gokr1 | Here it was: http://yosoygames.com.ar/wp/2013/12/gdb-pretty-printers-for-ogre-simd-datatypes/ |
15:15:48 | Araq | the problem with ENDB is that the generated code is very different from the code that normally runs |
15:16:11 | Araq | which is awful for debugging anything that's not a simple bug in some logic |
15:16:15 | gokr1 | So my idea there was to whip up a GDB pretty printer in Python, that actually calls a Nim lib to do the work. You think it would work? |
15:16:40 | gokr1 | ok |
15:17:37 | gokr1 | And oh, benchmarked that asynchhttpserver.nim in bigbreak using a trivial "ab" hammer. Wow! 20000 req/sec. |
15:18:35 | Araq | yeah and we haven't really optimized it yet |
15:18:37 | gokr1 | So I was toying with whipping up a proof of concept for one of our components that is a socket server that does a bit of MySQL basically. |
15:19:31 | gokr1 | I need to read a simple explanation of exactly how async/await works. |
15:19:48 | gokr1 | And now I gotta run - later! |
15:19:53 | Araq | Demos: variable generics are unnecessary when you have macros and varargs[$] |
15:20:03 | Araq | gokr1: dom96 wrote an article about it |
15:20:09 | Demos | link! |
15:20:15 | gokr1 | Ah... yeah please. |
15:20:17 | Demos | oh wait never mind |
15:20:32 | Demos | I want a link on how to do variadic generics with macros and varargs |
15:21:47 | gokr1 | :) |
15:22:26 | gokr1 | So... you basically do "await x" as soon as you do anything IO related - and you tag the callback as {.async.}? |
15:22:30 | gokr1 | Oh well, later |
15:28:12 | * | Fran__ is now known as Francisco |
15:28:39 | * | untitaker quit (Quit: ZNC - http://znc.in) |
15:29:55 | * | untitaker joined #nimrod |
15:44:11 | Demos | how do you combine varargs and macros to get variadic generics, like how might I write something like c++'s tuple<a,Args...> template |
15:45:37 | Demos | wow 20000 reqs/sec and my node.js thing at work takes 800ms to handle one goddamn request |
15:55:12 | wan | I just tried the windows 0.9.6_x64 installer from the website. The installer says it's 0.9.5 and I got a lot of "Error: HTTP/1.1 404 Not Found" while installing with everything checked. |
15:56:58 | * | gokr joined #nimrod |
15:58:10 | wan | The 404 is the docs.zip |
15:58:26 | wan | (I just hit retry a lot of times) |
15:59:57 | * | gokr_ quit (Ping timeout: 246 seconds) |
16:02:42 | * | dom96_ joined #nimrod |
16:11:47 | Araq | wan: ugh, thanks for reporting |
16:19:45 | woodgiraffe | Can someone provide me a SQL(ite) example? |
16:20:53 | dom96_ | woodgiraffe: take a look at nimforum it uses sqlite |
16:20:55 | Araq | wan: however you dont need the docs |
16:21:33 | woodgiraffe | dom96_: thanks |
16:23:35 | * | Matthias247 joined #nimrod |
16:27:03 | Araq | Varriount: go fix that 64bit installer! |
16:31:29 | * | johnsoft quit (Ping timeout: 265 seconds) |
16:32:06 | * | johnsoft joined #nimrod |
16:35:05 | * | Hodapp joined #nimrod |
16:35:15 | Araq | hi Hodapp welcome |
16:35:18 | Hodapp | hiya |
16:35:54 | Hodapp | is the official name Nimrod, or Nim? o_o |
16:35:55 | * | mko joined #nimrod |
16:36:25 | Araq | 0.9.6 is still Nimrod, 0.10.0 is Nim |
16:36:56 | Hodapp | ahh, okay |
16:38:24 | Hodapp | Looking at possibly using this for some embedded code, where I am really not looking forward to having to write a bunch of repetitive code, but I am also not looking forward to somehow generating the code and interfacing it |
16:50:56 | * | captainhook joined #nimrod |
16:51:12 | captainhook | Does anyone know how to convert an expr to a string inside a template? |
16:52:52 | * | dom96_ quit (Quit: Page closed) |
16:53:06 | Araq | captainhook: astToStr(x) |
16:53:23 | captainhook | Thanks! |
16:56:45 | * | kemet joined #nimrod |
16:57:44 | * | gokr_ joined #nimrod |
16:57:44 | * | gokr quit (Read error: Connection reset by peer) |
16:59:49 | * | captainhook quit (Ping timeout: 246 seconds) |
17:03:06 | * | prosper_ quit (Read error: Connection reset by peer) |
17:05:09 | wan | Araq: yes, I know I don't need the docs, but I tested the installer with everything checked to see if it worked fine |
17:08:20 | Araq | wan: very well. but you should have done that 2 days ago :-/ |
17:12:06 | Hodapp | I'm still getting a sense of everything in the language, but is there a practical way to turn off GC? I'm looking at using Nimrod for an application where I would really like for everything to be statically allocated. |
17:12:57 | Araq | Hodapp: --gc:none is not that practical, but it's also not too bad |
17:14:02 | Hodapp | alrighty |
17:14:57 | * | untitaker quit (Ping timeout: 259 seconds) |
17:15:54 | Araq | depends on whether you think it's hard to avoid the stdlib |
17:16:45 | * | gokr_ quit (Remote host closed the connection) |
17:16:47 | Araq | personally I think it's much simpler to use Nim without the stdlib than to use C or Ada with their stdlibs |
17:17:05 | * | gokr_ joined #nimrod |
17:17:21 | Hodapp | stdlib is pretty limited here as I'm targeting ARM Cortex M0 |
17:18:20 | * | enquora joined #nimrod |
17:23:40 | * | Etheco joined #nimrod |
17:24:05 | * | untitaker joined #nimrod |
17:26:57 | * | heinrich5991 joined #nimrod |
17:27:36 | * | kemet quit (Quit: Instantbird 1.5 -- http://www.instantbird.com) |
17:28:51 | Araq | hi heinrich5991 |
17:29:06 | heinrich5991 | hi :) |
17:31:15 | heinrich5991 | Araq: do I know you or have you just welcomed me? |
17:31:48 | Araq | just welcomed you |
17:40:08 | * | kemet joined #nimrod |
17:45:40 | * | kemet quit (Remote host closed the connection) |
17:47:51 | * | Demos quit (Ping timeout: 265 seconds) |
17:53:53 | superfunc | Were a friendly bunch |
17:57:14 | Etheco | so as someone who has never coded c++/java am i going to struggle ? xD |
17:57:45 | * | dapz joined #nimrod |
18:02:05 | * | prosper_ joined #nimrod |
18:03:37 | * | dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
18:07:26 | Varriount | Etheco: Nah. |
18:07:44 | Varriount | Etheco: What languages do you have experience with? |
18:07:53 | Varriount | Araq: What's wrong with the installer? |
18:09:11 | * | prosper_ quit (Ping timeout: 265 seconds) |
18:10:34 | * | dapz joined #nimrod |
18:11:48 | * | kshlm quit (Ping timeout: 244 seconds) |
18:12:37 | Etheco | Varriount, PHP is my main one, but i have dabbled with like Python/Ruby |
18:14:35 | Araq | Varriount: read the logs please |
18:20:22 | Varriount | Etheco: I've not heard very good things of PHP |
18:20:58 | Varriount | But I think Nimrod does enough for you that the learning curve won't be too steep. |
18:21:21 | Etheco | It does certainly look awesome, and love i can compile :) |
18:21:31 | Etheco | suppose its a case of slowly going though each section |
18:22:25 | Varriount | Etheco: And remember, there's no shame in asking for help. Someone is usually on. |
18:22:51 | Varriount | It helps if you live in the US or Europe - That's where most of the users here live. |
18:23:01 | Etheco | Europe here (UK) |
18:23:37 | * | dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
18:24:23 | Varriount | Etheco: Then you should be good. dom96 lives in the UK as well, though he doesn't have much time to spend (He's currently taking University classes) |
18:24:52 | * | prosper_ joined #nimrod |
18:25:43 | Varriount | Araq: Blame koch - it's the one that supplied the arguments for niminst. |
18:26:40 | Araq | Varriount: hrm |
18:27:08 | Araq | well koch uses its own version number |
18:27:16 | Araq | so you have to ensure koch has version 0.9.6 |
18:27:24 | Araq | we can add a check |
18:31:08 | * | dapz joined #nimrod |
18:33:46 | * | dapz quit (Client Quit) |
18:43:23 | * | dapz joined #nimrod |
18:47:52 | * | dapz quit (Client Quit) |
18:52:29 | NimBot | Araq/Nimrod devel 95595d8 Araq [+0 ±1 -0]: updated readme.md |
18:52:30 | * | dapz joined #nimrod |
18:53:41 | Varriount | Araq: Why doesn't koch use the version number the nimrod compiler uses? |
18:54:06 | Araq | Varriount: 'cause I was lazy |
18:54:17 | Varriount | :P |
18:54:24 | Araq | using system.NimVersion was easier than to read Nim's output |
18:56:39 | Varriount | Araq: Um, shouldn't that give the right version no.? |
18:58:14 | Araq | well no. if you used 0.9.5 to compile koch |
18:58:27 | Araq | then koch thinks everything is still stuck in 0.9.5 |
19:00:28 | Varriount | Araq: Slight different topic, has string assignment been optimized so that memory is reused when the length of an old string variable is greater than the length of a new string variable? |
19:00:40 | Araq | nope |
19:01:00 | Araq | wanna implement it? |
19:01:26 | Varriount | I would *like* to implement it, but whether I *can* is another matter. |
19:01:37 | Varriount | Araq: How much time and/or skill would it take? |
19:02:05 | Araq | looks like a ~5 line patch to ccgexprs.nim |
19:03:26 | * | prosper_ quit (Read error: Connection reset by peer) |
19:03:26 | * | prosper__ joined #nimrod |
19:04:40 | * | dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
19:06:32 | * | dapz joined #nimrod |
19:08:54 | * | dapz quit (Client Quit) |
19:36:59 | * | BlaXpirit joined #nimrod |
19:37:57 | Trustable | Araq: Does this work? The destination string can be also on the right side of the assignment. |
19:38:53 | Araq | Trustable: good point. we have some aliasing analysis machinery that can detect this though |
19:39:34 | Trustable | nice :) |
19:40:13 | * | flaviu joined #nimrod |
19:40:56 | Trustable | btw, add() is really fast method to concatenate strings, good job |
19:41:41 | Araq | flaviu: can you also patch pegs then? |
19:41:49 | Araq | for consistency |
19:41:55 | flaviu | Araq: Sure |
19:42:02 | Araq | ty |
19:45:24 | * | flaviu quit (Read error: Connection reset by peer) |
19:47:38 | * | flaviu joined #nimrod |
19:48:06 | NimBot | Araq/Nimrod bigbreak 50d9db0 Billingsly Wetherfordshire [+0 ±1 -0]: fix issue #1581 |
19:48:06 | NimBot | Araq/Nimrod bigbreak 8910908 Andreas Rumpf [+0 ±1 -0]: Merge pull request #1582 from fowlmouth/patch-1... 2 more lines |
19:48:57 | NimBot | Araq/Nimrod bigbreak aac8de6 Erik O'Leary [+1 ±5 -0]: Fixed FD_SET casing |
19:48:57 | NimBot | Araq/Nimrod bigbreak 09f177e Erik O'Leary [+0 ±1 -0]: patched fdset call in osproc |
19:48:57 | NimBot | Araq/Nimrod bigbreak 72476e1 Andreas Rumpf [+1 ±6 -0]: Merge pull request #1566 from onionhammer/bigbreak... 2 more lines |
19:59:25 | Araq | ping Varriount |
20:03:09 | woodgiraffe | Someone aware of a nimrod dbus lib/wrapper? |
20:03:34 | Araq | woodgiraffe: asked babel/nimble ? |
20:03:50 | Varriount | Araq: Hm? |
20:04:03 | Araq | are you updating the installer or what? |
20:04:11 | Varriount | Araq: I'm in the middle of math class. |
20:04:29 | Araq | excuses ... ;-) |
20:04:31 | Varriount | Araq: I ran the installer generator, but I haven't had a chance to verify it. |
20:04:43 | Araq | excellent |
20:04:51 | Araq | math is important, pay attention! |
20:05:12 | woodgiraffe | Never understood this subtraction thing, addition I was really good at tho |
20:05:27 | Varriount | Araq: It would help if my professor was more... effective. |
20:05:54 | Varriount | As things currently stand, I'm likely going to be forced to drop the class by the end of the month. |
20:09:13 | Varriount | I can't help but feel that an 8 question exam is not an adequite measure of a student's progress. |
20:09:28 | flaviu | Varriount: Depends on the subject |
20:09:29 | Varriount | Especially when partial credit is not given for wrong answers. |
20:09:43 | flaviu | Ok, that's ridiculous |
20:18:40 | * | dapz joined #nimrod |
20:23:08 | Varriount | Araq: What needs to be fixed regarding the documentation for the 64 bit installer? |
20:23:40 | Araq | Varriount: nothing as long as koch gets the right version number, I think |
20:24:48 | Varriount | Araq: Ok, the installer I just built seems to work. |
20:26:33 | Varriount | Araq: Do you think that string assignment optimization could be applied to other types? |
20:26:48 | * | johnsoft quit (Ping timeout: 272 seconds) |
20:26:56 | Varriount | Or is it already applied to other types? |
20:27:44 | * | johnsoft joined #nimrod |
20:28:41 | Araq | only seqs come to mind |
20:28:51 | Araq | but they generally are used differently |
20:29:05 | Araq | so it's not important to optimize seq assignment, I think |
20:29:19 | Araq | btw your optimization is only an optimization in some cases |
20:30:03 | fowl | Araq, is a string really just seq[char] |
20:31:05 | Araq | fowl: no. string has a hidden \0 for O(1) conversion to cstring |
20:31:52 | fowl | Araq, in system.nim i see it casted to PGenericSeq, they are the same under the hood then? |
20:33:41 | Varriount | Araq: I found a flaw in the installer code. If a user hits 'cancel' while downloading a component, they get an error box with the abort/ignore/retry selection. |
20:34:23 | Varriount | Araq: What should happen when I use hits cancel while downloading a component? Should the entire installer quit, or should downloading the component be cancelled? |
20:34:25 | Araq | fowl: well they both start with the GenericSeq |
20:35:07 | Araq | Varriount: download be cancelled |
20:35:19 | Araq | Varriount: but I think it's a minor issue |
20:37:54 | * | prosper__ quit (Remote host closed the connection) |
20:40:25 | fowl | Trustable, i made you a collaborator on nimrod-sfml so you can commit |
20:40:58 | Trustable | I see, thx |
20:52:02 | Trustable | fowl: Merge https://github.com/fowlmouth/nimrod-sfml/pull/1 ? |
20:54:28 | fowl | ah neat. i didnt expect the context settings to fix that |
20:54:31 | fowl | Trustable, sure |
21:01:08 | Varriount | Araq: https://drive.google.com/file/d/0B077nrrf63xtUk15MTIyNmQ1MkE/view?usp=sharing |
21:02:35 | NimBot | Araq/Nimrod devel b0d9dc4 Varriount [+0 ±1 -0]: Update nsis.tmpl... 2 more lines |
21:03:37 | Varriount | Be back later. |
21:05:07 | * | Jesin quit (Quit: Leaving) |
21:07:08 | * | Jesin joined #nimrod |
21:07:44 | * | Francisco quit (Ping timeout: 245 seconds) |
21:09:49 | Araq | wan: please test the installer again |
21:11:49 | flaviu | Araq: ok, done. https://github.com/flaviut/Nimrod/commit/a78efe48f2d9ba003b7cafe232f6588a5305ac90 |
21:12:02 | * | Jesin quit (Quit: Leaving) |
21:12:44 | flaviu | fwi, you can use rebase to make all github -> local merges fast-forward merges. |
21:16:28 | * | nande joined #nimrod |
21:21:54 | fowl | nice |
21:22:06 | fowl | flaviu, how did you convince araq that nil is better than "" |
21:22:40 | flaviu | I dunno. I just asked him one day if I should close it, but he said he'll eventually merge it. |
21:22:45 | * | Fr4n joined #nimrod |
21:24:17 | * | Jesin joined #nimrod |
21:28:49 | * | askatasuna quit (Ping timeout: 260 seconds) |
21:32:40 | Trustable | Does anyone know how to install one of the following libraries under Linux Mint? I have tried the Software Manager already. Libraries: SDL_Mixer, Ogg, PortAudio, sndfile |
21:40:54 | Trustable | Problem solved by replacing libogg.so with libogg.so.0 |
21:46:31 | gokr1 | One thing I read that I wonder about - the fact that var parameters are not "distinguished" at the call site. I mean, the arguments look the same. Isn't that a bit of a trap? |
21:49:26 | gokr1 | And... are people actively using var params in Nim? I always felt they .. are ok in C, but... well, Smalltalk don't even have them ;) |
21:51:33 | flaviu | Yep, but keep in mind, what is a object anyway? |
21:52:07 | gokr1 | Hum? |
21:53:02 | flaviu | Objects in java, c# are just pointers. Their value isn't sacred at all. They aren't C++ "const" (I think, not to familar with c++) |
21:53:05 | * | dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
21:54:38 | gokr1 | I am not sure I ... follow. I wouldn't express myself using those words. Objects aren't pointers. They are *referred* to with pointers, yes. "Their value", which value do you mean? The pointer? |
21:54:56 | flaviu | No, the thing being pointed to. |
21:55:10 | flaviu | eg, where `a` is a param, I can do a.b = 123 |
21:55:15 | gokr1 | Sure. |
21:55:44 | gokr1 | You are modifying the object, but not the pointer. |
21:56:32 | flaviu | Ok, what if the object is just a wrapper around another object, such that a.b is another object? a.b = new Foo() |
21:56:53 | gokr1 | I always felt that "var params" ... I mean, it gives you the ability to modify a variable in the calling scope. Its a tricky thing. |
21:57:19 | flaviu | I don't agree or disagree with you. I'm just saying that it is a false distinction. The only difference is your mental metaphor. |
21:58:19 | gokr1 | Well, perhaps its the Smalltalker in me. All variables are refs in Smalltalk. Every value is an object. |
21:58:37 | gokr1 | But those two things are quite distinct. Variables have scope. Objects live on the heap. |
21:58:48 | NimBot | Araq/Nimrod bigbreak 6043194 Simon Krauter [+0 ±1 -0]: Fixed missing color definion in docs CSS |
21:58:48 | NimBot | Araq/Nimrod bigbreak 849484f Simon Krauter [+0 ±1 -0]: Do not allow self import |
21:58:48 | NimBot | Araq/Nimrod bigbreak 27585ee Simon Krauter [+0 ±1 -0]: Compare fileIndexes instead of file names |
21:58:48 | NimBot | Araq/Nimrod bigbreak 8b70e2c Simon Krauter [+1 ±0 -0]: Added test case |
21:58:48 | NimBot | 28 more commits. |
21:59:03 | fowl | gokr1, i miss var/out types in ruby |
21:59:11 | gokr1 | Hehe |
21:59:15 | fowl | sometimes its useful to replace a value with a new object |
21:59:41 | gokr1 | Personally I always feels it messes up the boundaries. |
22:00:10 | gokr1 | And especially when its not apparent at the call site... which is why I am bringing it up. |
22:00:22 | fowl | you usually find a use for it in imperative code |
22:00:31 | Araq | but flaviu's point is valid |
22:00:33 | gokr1 | I can imagine debugging sessions going... "Why the hell is X 10 now of a sudden?" |
22:00:56 | gokr1 | And then ... oh, because that proc I called actually has a var param, not a normal param. |
22:01:26 | Araq | when you have f(a, b) in smalltalk (can't remember its syntax) everything reachable from a and b could be modified |
22:01:35 | fowl | gokr1, that probably comes up in c++ forums, there are newbs everywhere |
22:01:42 | gokr1 | Sure, but not a or b. |
22:02:07 | gokr1 | The problem here is that I need to look at the definition of a proc - to be aware that its a var param. |
22:02:34 | fowl | you also get an error if you try to pass in a constant value |
22:03:16 | flaviu | yes, using let by default helps in that regard |
22:03:22 | Araq | so that's the reason? the advantage is that you can't have swap(a,b) in Smalltalk? |
22:03:26 | gokr1 | Araq: As I said, sure, you can modify anything you can reach. But you can't modify the "a" variable in the calling scope. |
22:03:48 | Araq | and when I write that as 'a <-> b' it's fine? |
22:03:50 | gokr1 | Araq: Come again? |
22:03:53 | Araq | makes no sense |
22:04:32 | gokr1 | I lost you somewhere. |
22:04:57 | Araq | well your argument makes little sense |
22:05:21 | gokr1 | We are talking about two different things now. First how it works in Smalltalk, which is actually of little interest. |
22:05:45 | gokr1 | Secondly, the fact that it might be a problem that you can't see at the call site - that the called proc can modify the variable. |
22:06:02 | gokr1 | In C you see it. Because you need to type &a or whatever. |
22:06:16 | Araq | no, that's wrong |
22:06:25 | Araq | #define swap(a,b) .... |
22:06:30 | fowl | "var" is not in c, its in c++ as ref(&) |
22:07:12 | Araq | the point is: the argument is not valid for any widely used imperative language |
22:07:15 | gokr1 | What I meant is that in C - the called function can modify the pointer itself iff I send in the address of it. |
22:07:17 | fowl | c++ lets you store a reference too.. its weird |
22:08:09 | Araq | the argument totally arbitrary; foo(a, b) could also delete files on your harddisk |
22:08:22 | Araq | *is totally |
22:08:54 | gokr1 | Well, I can understand the philosophical point of view, sure. |
22:09:11 | gokr1 | I just read this critique of Nimrod and this was one thing brought up. |
22:09:13 | Araq | but hey, let's see how you like 'add(var x, b)' everywhere |
22:09:39 | Araq | oh but that's special I guess... because everybody knows about 'add' |
22:09:52 | gokr1 | Thing is, in Smalltalk we don't have this at all. So I am not quite sure how much this is used in Nim code? |
22:10:10 | Araq | so smalltalk has no 'add/append'? |
22:10:21 | gokr1 | Of course we have, but we don't have "var params" |
22:10:33 | gokr1 | A called method can not modify a variable in the calling scope. |
22:10:43 | fowl | gokr1, its used for things like SDL_PollEvent(event:var TEvent): bool |
22:10:48 | gokr1 | A variable being "the pointer itself". |
22:11:08 | gokr1 | Right, I can understand it pops up all over C wrappers. |
22:11:14 | gokr1 | Since C uses this style a lot. |
22:11:26 | Araq | come on now, in Nim terms everything in smalltalk is 'ref T' |
22:11:44 | gokr1 | All variables, yes. |
22:12:20 | gokr1 | Except for SmallInteger. They are encoded in the pointer itself. |
22:12:55 | Araq | so if you do: var x: Foo; x.add(b) that is no issue at all if 'x' is 'ref T' but if it's a problem if it's a T and 'add' takes a 'var' ? |
22:12:55 | flaviu | Are custom compiler passes possible? |
22:12:58 | gokr1 | So a variable in Smalltalk (32 bit) is a 31 bit pointer. The last bit is a "tag" that shows if its a SmallInteger or if its a pointer to an Object. |
22:13:53 | * | gokr1 trying to parse what you said... |
22:14:51 | Araq | flaviu: not really. |
22:15:00 | gokr1 | Right... so... yes, I understand... the thing is - since Nim has T and not just "ref T" - the var params suddenly become quote often occurring - right? |
22:15:06 | gokr1 | quite. |
22:15:20 | flaviu | gokr1: Yes |
22:15:40 | gokr1 | Ok, that explains why they would be used much more often in Nim. |
22:15:41 | * | Matthias247 quit (Read error: Connection reset by peer) |
22:17:12 | Araq | frankly, all these arguments are arguments against plain function calls. cause they can "hide" arbitrary things from you. |
22:17:26 | gokr1 | Nono. |
22:17:28 | flaviu | You don't often need to put stuff on heap, the stack works just as well in most cases |
22:17:45 | gokr1 | Yes, I understand. Its just me not very used to it. |
22:18:22 | gokr1 | Ok, so I do understand that they are much more used when you use objects on the stack. And yes, it would probably look messy. Fine. |
22:18:42 | flaviu | I wonder how much less GC pressure this causes, vs Java, where there is no stack allocation |
22:18:51 | * | dapz joined #nimrod |
22:18:58 | gokr1 | Probably a big difference, and same goes for Smalltalk of course - even more so. |
22:19:05 | gokr1 | Since everything is an object in Smalltalk. |
22:19:55 | * | dapz quit (Client Quit) |
22:20:05 | gokr1 | Btw, Smalltalkers (very seldomly, but it happens) use "closures" when the need arises. |
22:21:53 | gokr1 | Like say, making a call and getting 3 things back. Either return an object with those 3 things, or say an array or whatever. Just like in Nim. But when Nim would use var params - a Smalltalker would probably use a closure argument. |
22:22:22 | gokr1 | So you "turn it around" - with a callback so to speak. |
22:23:38 | Araq | how do you 'swap' with a callback? |
22:23:59 | flaviu | swap seems very nearly useless |
22:24:14 | Araq | swap is an essential builtin |
22:24:22 | gokr1 | essential? |
22:24:27 | Araq | yes. |
22:24:40 | flaviu | no chance. It's barely used |
22:25:00 | Araq | that doesn't mean it's not essential. |
22:25:16 | Araq | essential doesn't mean "frequently used" |
22:25:16 | * | BlaXpirit quit (Quit: Quit Konversation) |
22:25:43 | gokr1 | Well, do you mean make sure a points to whatever b points to, and vice versa? You don't mean become? |
22:26:11 | Araq | I mean 'swap' as in 'sort' requires it |
22:26:22 | flaviu | Araq: Sort is implemented once. |
22:26:37 | gokr1 | If you mean the former - which I very seldomly have done - I would just do assignments and use a temporary. |
22:26:38 | flaviu | let tmp = a; a = b; b=a |
22:26:44 | gokr1 | Exactly. |
22:26:55 | Araq | that's not the same at all. |
22:27:04 | flaviu | err, let tmp = a; a = b; b=tmp |
22:27:11 | Araq | that makes 3 copies you need to optimize away |
22:27:19 | Araq | 'swap' doesn't copy |
22:27:28 | flaviu | Araq: Who cares? The optimizer will deal with it. |
22:27:34 | Araq | it's an essential builtin, much like assignment |
22:28:27 | gokr1 | So no, this is not something Smalltalk has I think - for regular variables I mean. |
22:28:32 | Araq | flaviu: no, it often doesn't. hence C++ gained move semantics. |
22:28:38 | gokr1 | But Smalltalk does have the become operation. |
22:28:58 | gokr1 | http://gbracha.blogspot.se/2009/07/miracle-of-become.html |
22:29:16 | gokr1 | The become: operation is essential in a live Smalltalk. |
22:29:21 | gokr1 | But that's another thing. |
22:31:12 | * | dapz joined #nimrod |
22:31:16 | gokr1 | Araq: But it has been discussed adding atomic swap: http://forum.world.st/How-about-atomic-value-swap-bytecode-td2991831.html |
22:31:40 | gokr1 | So does Nim have become: then? ;) |
22:32:20 | * | Araq sighs |
22:32:31 | gokr1 | ( do note the smiley) |
22:32:47 | Araq | so lets assume Nim has no evil 'var' |
22:32:58 | * | dapz quit (Client Quit) |
22:33:09 | flaviu | Araq: See Java |
22:33:12 | Araq | then we can still do the same evil things with macros: |
22:33:31 | Araq | template swap(a, b)= let tmp = a; a = b; b = a |
22:33:50 | gokr1 | For the casual reader: I did more or less say I understand the need for var in Nim, and that it will probably look messy at call sites - since its indeed used more in Nim. |
22:34:04 | gokr1 | So I am not arguing anymore there. |
22:34:16 | gokr1 | I am just arguing in my spare time ;) |
22:34:20 | Araq | swap(x, y) # argh 'x' changes its value |
22:34:46 | Araq | see? nothing gained |
22:35:03 | gokr1 | Hehe, macros are a bit like... Godwin's law. |
22:35:05 | Araq | btw C has the same feature with #define |
22:36:11 | gokr1 | (again, I am all with you Araq) What I mean is that discussing language mechanisms - and then saying "Yeah, but hey, with macros I can do it anyway...". Its kinda cheating :) |
22:37:10 | gokr1 | I need to get to bed. |
22:38:33 | Araq | sorry, but it's really tiresome. The reality is that Nim now even prevents deadlocks at compile-time and you cannot reason about Python code at all. and yet people fear Nim and love Python for its "readability". |
22:38:54 | gokr1 | What is tiresome? |
22:39:43 | gokr1 | You mean that ... its tiresome that people don't appreciate/discover Nim more? |
22:39:48 | * | dapz joined #nimrod |
22:40:02 | gokr1 | That I can sympathize with - Nim is a gem and ... very unknown. |
22:40:12 | gokr1 | But... I think it will change. |
22:40:25 | gokr1 | Also, you got 66 people in this channel. |
22:40:38 | flaviu | Perhaps all these irc arguments could be published |
22:40:40 | gokr1 | Its not shabby. |
22:41:48 | gokr1 | The above discussion on var arguments - was interesting to me at least. I learned that, yes, since Nim has stack objects the var params are very much used. And yes, having it visible on call sites would probably make it look silly. So I learned that. |
22:42:08 | * | dapz quit (Client Quit) |
22:42:10 | Araq | no, it's tiresome that I keep hearing the same totally wrong arguments |
22:42:14 | Araq | ;-) |
22:42:22 | gokr1 | Oh, sorry for that. |
22:42:40 | gokr1 | But you know, I am from a different world. Smalltalk is very different. |
22:42:50 | Araq | don't take it personal |
22:42:59 | gokr1 | I mean, hell, we have 5 keywords in our grammer. |
22:43:01 | gokr1 | grammar. |
22:43:11 | gokr1 | And none of them is "if". |
22:43:42 | gokr1 | But you need to understand that "wrong argument" - depends on context. |
22:44:17 | Araq | well no, the context is most of the time "in C ..." |
22:44:19 | gokr1 | I may be wrong in Nim, but I may be quite right in Smalltalk. I have programmed professionally in Smalltalk since 1994, so I do know it. |
22:44:56 | gokr1 | Oh, well, I did that because the person I read this from did that connection. |
22:45:15 | Araq | ok, let me give you another example |
22:45:46 | Araq | "Golang has no generics but C lacks them too so it's a non-issue for systems programming" |
22:46:20 | gokr1 | Hehe, yeah... |
22:46:37 | Araq | this argument completely ignores that fact that C has a preprocessor and so has a (very shitty) way to do generic programming |
22:47:22 | flaviu | Someone asked that? |
22:47:22 | * | Jessin joined #nimrod |
22:47:25 | * | Jesin quit (Quit: Leaving) |
22:47:25 | gokr1 | first of all - these arguments that go "lang X has Y but lang Z doesn't so..." - they don't work. Because mechanisms interfere with each other. |
22:47:29 | gokr1 | Its the same thing with say multiple inheritance. C++ guys can't imagine a world without it. Smalltalkers go "huh?". |
22:47:44 | Araq | whereas Go has none at all. |
22:47:51 | * | q66[lap]_ joined #nimrod |
22:47:53 | gokr1 | And that's because the rest of the language is so different - so it makes a different context. |
22:48:14 | * | q66[lap]_ quit (Changing host) |
22:48:14 | * | q66[lap]_ joined #nimrod |
22:48:39 | Araq | flaviu: it's a common line of reasoning on reddit ... |
22:48:40 | * | enquora quit (Quit: enquora) |
22:48:42 | gokr1 | Btw, let me find that... critique I read - because I would like you to perhaps respond to another thing in it... |
22:48:42 | flaviu | gokr1: Sorry, I don't see how lack of generics in Go can be seen as anything but a problem |
22:48:48 | superfunc_ | Almost all C++ shops I've seen basically forbid MI |
22:48:59 | gokr1 | flaviu: What did I say? |
22:49:34 | superfunc_ | flaviu: Go thinks they are novel by polishing all the great language ideas from the 70s |
22:49:42 | flaviu | Sorry if I took the point of the context statement incorrectly |
22:49:46 | superfunc_ | and ignoring all language design research after that |
22:49:54 | gokr1 | In my humble opinion - statically typed languages do need some kind of generics. |
22:50:39 | superfunc_ | I do too. I don't like the notion that they are just useful for making containers, so only the stdlib implementors need them |
22:50:54 | superfunc_ | I've seen that argument from a friend who does Go before |
22:51:02 | * | q66[lap] quit (Ping timeout: 250 seconds) |
22:51:04 | gokr1 | flaviu: Yes, I meant simply that its hard to compare languages "by piece" since the context makes one piece useless in one language, and essential in another. |
22:51:51 | * | q66[lap]_ is now known as q66[lap] |
22:52:14 | gokr1 | Araq: https://www.daniweb.com/software-development/legacy-languages/threads/448047/has-anybody-used-nimrod |
22:52:27 | gokr1 | Check what "bguild" writes there. |
22:53:08 | gokr1 | Perhaps... we should make a page describing these criticisms and what the Nim response is? |
22:53:45 | gokr1 | Araq: The thing I was mostly interested in is what he writes about lack of multiple inheritance. |
22:53:54 | flaviu | gokr1: I was considering making a wiki page, but the hardest part is naming it. |
22:53:57 | flaviu | Thanks! |
22:53:59 | superfunc_ | typeclasses solve the need for MI |
22:54:24 | gokr1 | superfunc_: Oh yes yes yes. :) |
22:54:32 | flaviu | superfunc_: I would've liked mixins some times. |
22:54:35 | gokr1 | Thanks for reminding me, shit, I had almost forgot about them. |
22:55:04 | superfunc_ | Like, how about we do this ish without an extra layer of indirection to jump through haha |
22:55:17 | * | Trustable quit (Quit: Leaving) |
22:55:35 | superfunc_ | that's one thing about the "OOP" approach that bothered me |
22:55:51 | Araq | "I don't see what all the dangerous trickery of when is trying to accomplish that couldn't be managed more safely with a simple if." |
22:56:30 | Araq | well but the point of 'when' is obvious |
22:58:01 | gokr1 | Hehe, well, several things he writes are a bit off, but I guess he is not alone. So in order to build a good coherent argument for the design decisions - I think a "criticisms" page would be nice,. |
22:58:12 | Araq | if programmers were mathematicians they would tell Euler to stop using power series because they "can be dangerous" |
22:59:13 | Triplefox | 'Programming' Considered Harmful |
23:00:45 | Hodapp | superfunc_: The sooner the world realizes that OOP just needs to be shuffled off into the land of paradigms that only really work in certain niches and are unnecessary and even harmful in others, the better. |
23:01:07 | Araq | and Uncle Bob would explain people how to guess the numerical answers and then test if the answer is close enough. |
23:01:21 | * | Hodapp . o O ( test-driven mathematics? ) |
23:01:36 | flaviu | Bashing other things isn't productive |
23:02:20 | Triplefox | sounds like what i learned when elementary school gave me word problems that were best solved algebraically without giving me algebraic tools, and then acted surprised when my method to answer each one was "guess and check" |
23:03:29 | * | willwillson joined #nimrod |
23:04:31 | gokr1 | Would Nim perhaps be able to adopt the embedding thing from Go? |
23:05:06 | Araq | gokr1: yeah, it's worth stealing |
23:05:42 | Triplefox | i guess one starting point for a Nim criticism page is laying out in which ways it wants to be criticized; that's the part where the language is opinionated |
23:06:50 | gokr1 | Araq: Great to hear! Because that part is actually nice - and it was the idea (of how parts of a cell can expose themselves on the outside of the cell) that erroneously led to the concept of Traits. |
23:07:58 | gokr1 | I have for a long time longed for more exploration of composition. So that little part I would say Go got right ;) |
23:10:14 | * | dapz joined #nimrod |
23:11:22 | * | dapz quit (Client Quit) |
23:11:23 | flaviu | gokr1: https://github.com/Araq/Nimrod/wiki/Common-Criticisms#callsite-annotations-on-var-parameters-would-decrease-mistakes |
23:11:41 | gokr1 | Cool |
23:11:59 | flaviu | mind reading over it and criticizing? |
23:12:06 | Hodapp | include the standard "blah blah what is this language I've never heard of it I can't find anyone who knows how to code this" |
23:12:27 | Araq | flaviu: you need to elaborate |
23:12:28 | gokr1 | Btw, back in 2009 I asked for more focus on composition on squeak-dev and Andreas Raab (RIP) responded and explained how Traits came to be: http://marc.info/?l=squeak-dev&m=126031733922434&w=2 |
23:13:05 | * | dapz joined #nimrod |
23:13:59 | gokr1 | flaviu: Fairly good, but a bit more words perhaps. I can ... see if I can add some. |
23:14:05 | Araq | gokr1: btw it's this very idea of modelling things after biological systems that I find totally unconvincing. |
23:14:22 | flaviu | gokr1: Reload first, I made changes |
23:14:24 | Araq | biological systems are incredibly hard to understand! |
23:14:28 | gokr1 | Well, its an analogy. |
23:14:52 | Araq | you *do not* want your programs to be like biological systems. |
23:15:32 | Araq | and how exactly are these "extensible" anyway? |
23:15:36 | gokr1 | And oh, I made an mp3 interview over Skype with Dan Ingalls (the main Smalltalk man) a few years back an asked about if biological cells etc indeed *was* an inspiration back in 1970-80 when they created Smalltalk - and he said, that no, not for him at least. |
23:16:09 | * | Etheco quit (Quit: Leaving) |
23:16:32 | gokr1 | I do know that some ideas were around objects with parts much more loosely connected. |
23:17:06 | gokr1 | IIRC someone described the idea of parts communicating indirectly over a tuple space or similar - instead of via explicit calls. |
23:18:10 | Araq | It's a very bad analogy. |
23:18:20 | gokr1 | Alan Kay discovered Simula and wrote out the source code on paper and put it all over the floor. It was partly in Norwegian so they had some trouble understanding it. :) |
23:19:13 | gokr1 | But basically Alan Kay was researching in UIs - and that is why he picked up the objects from Simula and "ran with it" in Smalltalk. Since UIs are event driven - not just a recipe from start to stop. |
23:20:19 | gokr1 | I can recommend the Hopl paper on Smalltalk, even if you think OO sucks its a great piece of computing history. |
23:20:28 | * | dapz quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
23:21:05 | gokr1 | Since it interleaves with the whole Xerox PARC / UI / Apple /Jobs story. |
23:23:29 | * | quasinoxen quit (Remote host closed the connection) |
23:25:54 | Hodapp | gokr1: OO as defined in Smalltalk and as taught today are very different notions though. |
23:26:15 | gokr1 | flaviu: "a compile-time". Sorry, brain stopped. Its good, but it feels like it may need some more explanation to fit the title. Like, what mistake? The thing that people like me get icky about is not modifying the object itself - but modifying the reference to point at some other guy. |
23:26:24 | gokr1 | Hodapp: true |
23:26:42 | gokr1 | aaah, bed calling. |
23:26:45 | gokr1 | gnite |
23:26:50 | Araq | gokr1: yes "people like you", but you're in the minority |
23:27:03 | Araq | most simply complain that it can modified |
23:27:07 | Araq | *can be |
23:27:11 | Araq | good night |
23:27:12 | gokr1 | Mmmmm, am I? In this respect I am not so sure. |
23:28:15 | gokr1 | Do you know why? Because Java doesn't support it either. And I don't consider the Java crowd a minority, unfortunately :) |
23:29:21 | Araq | the Java crowd has no idea and doesn't count |
23:29:27 | gokr1 | Ha! |
23:29:35 | gokr1 | I gotcha and you know it ;) |
23:30:16 | gokr1 | gnite |
23:30:42 | Varriount | gokr1: The longer a macro gets, the more likely it is that it will be compared to hitler? |
23:31:37 | Araq | the normal Java developer does not even know other languages are "portable" too... |
23:33:09 | gokr1 | Varriount: That one works too ;). I mainly meant that when all other arguments run out... you can always pull out a macro! |
23:33:12 | * | darkf joined #nimrod |
23:40:20 | * | fghj joined #nimrod |
23:40:32 | fghj | hello |
23:40:43 | Araq | hi fghj welcome |
23:41:25 | fghj | thanks, got a question for you. Is "import strutils as su" still valid in 0.9.6? |
23:41:45 | Araq | should work, yes |
23:42:06 | fghj | In 0.9.5 it works for me, but in 0.9.6 (compiled today) it gives me a "Error: A module cannot import itself" |
23:42:41 | Araq | is your module also named 'su'? |
23:43:04 | fghj | the file is named test.nim |
23:43:41 | Araq | ugh, that's a serious regression |
23:43:47 | Araq | I can reproduce |
23:44:13 | fghj | Do you want me to put in an issue in github about it? |
23:45:01 | * | dapz joined #nimrod |
23:46:23 | Araq | yeah |
23:46:48 | fghj | ok, will do. Thanks! |
23:46:48 | Araq | do you use 'devel' or the official release? |
23:46:53 | * | dapz quit (Client Quit) |
23:47:24 | fghj | oh, I pulled the 'devel' branch |
23:48:51 | flaviu | Araq: Now that it's been a while, is there any chance I can convince you to add `box()`? |
23:49:02 | Araq | well let me push the fix, fghj |
23:52:00 | Araq | flaviu: what's the use case? |
23:52:07 | flaviu | box Foo(asf) |
23:52:22 | flaviu | You said you didn't want to repurpose `new` for that purpose |
23:53:07 | fowl | doesnt new already work that way |
23:53:20 | flaviu | It has the advantage of not having to use the IMO ugly syntax (ref T)(asf) that you mentioned |
23:53:38 | flaviu | fowl: Not really. (let foo: ref T; new(foo)) |
23:54:26 | fowl | ah i was thinking of new(typedesc) |
23:55:20 | NimBot | Araq/Nimrod devel fa77547 Araq [+0 ±2 -0]: fixes 'import x as y' regression |
23:55:20 | NimBot | Araq/Nimrod devel 0f26040 Araq [+0 ±1 -0]: Merge branch 'devel' of https://github.com/Araq/Nimrod into devel |
23:55:28 | * | dapz joined #nimrod |
23:55:59 | Araq | fghj: that should fix it |
23:57:21 | fghj | I'll test it out, thanks for the quick fix! BTW, I had put in issue #1584 |
23:57:44 | * | dapz quit (Client Quit) |
23:58:29 | Araq | flaviu: that's not a use case, but whatever. How would you implement it? |