00:00:00 --- log: started forth/20.07.20 00:10:54 --- join: shynoob joined #forth 00:11:53 hey.. how hard will it be to reverse engineer a program that was developed using Forth? will it be easier than reverse engineering a program that was developed using C? 00:19:06 depends on the Forth implementation, I'd expect; if it's a straightforward threaded-code implementation, it's probably pretty easy (heck, the wordlist might be in there still!); if it's an optimizing native-code implementation, might be harder for RE tools to work with if the code it generates doesn't look like the code a C/C++ compiler generates 00:20:00 that's troubling 00:20:20 it all ends down to how random you can be 00:20:21 damn 00:20:27 eh, I wouldn't say /random/ 00:20:50 RE tools need to use heuristics, or determining program behavior is intractable 00:21:23 and these are developed against C/C++ programs, 'cause lots of programs are in C/C++ 00:21:27 --- join: proteus-guy joined #forth 00:22:17 if you want to make a forth implementation that makes difficult-to-reverse-engineer code, that might honestly not be /that/ hard 00:22:36 you just need to be random right? 00:22:45 I again wouldn't say random 00:22:57 there's a bunch of things that automated tooling is bad at reasoning about 00:23:18 https://github.com/obfuscator-llvm/obfuscator/wiki/Features is a few 00:24:20 anti-human-reverse-engineering measures are trickier 00:24:35 oh btw I was meaning to ask.. do most ppl here not use swiftforth IDE? 00:24:47 assuming its not free 00:24:58 and there are other forth implementations 00:25:16 assuming that's the reason* 00:25:22 I write my own forth implementations, currently maintaining 2, one for bare-metal aarch64, one for any 64-bit little-endian processor with a C compiler, running under Linux 5.6+ onlyy 00:25:32 there's a common joke that there are more Forth implementations than programs written in Forth 00:26:49 heh.. looks like forth is a stepping stone for ppl designing their own impl. and using it to develop? 00:27:40 I describe Forth as equal parts philosophy and language; it definitely feels like one of the steps of having fully learned forth is writing your own Forth implementation 00:28:01 and generally despite these implementations not being identical, people can share ideas + pseudo-code pretty freely between them 00:28:30 I still have a hard time understanding computers and computer science in general.. I only have my end goal at sight.. which is to be able to develop games.. 00:30:00 Forth is not what I'd recommend for that, assuming you want 3d games using the gpu 00:30:36 it's possible to do games in forth, you're just going to be walking uphill 00:31:20 (again assuming 3d, gpu-using games; a text adventure in forth would be reasonable + super-interesting) 00:32:01 I'd personally recommend C, C++, or Rust; you'll find it a lot easier to use opengl (or your other gpu api of choice) from them, and especially for C++ there will be a lot more resources available 00:32:16 --- quit: Zarutian_HTC (Read error: Connection reset by peer) 00:32:19 --- join: Zarutian_HTC1 joined #forth 00:33:49 on the other hand, learning Forth might help with grokking what exactly the machine does, which you'll want a very strong practical understanding of for complex games 00:34:22 yeah... it appears thhey are the only options.. available.. but is there no way you'd suggest for forth to get good with graphics and games and stuff? 00:34:38 oh I meant.. 00:35:27 since there will be alot of stuff to do using forth if I begin to think of 3d games in Forth.. why does not anyone suggest.. to help the forth community grow.. and accept graphics and gaame stuff 00:35:52 is it not worth the efforts long term? 00:36:03 I don't think it's the case that graphics isn't *accepted*, so much as most of the people using Forth are working on different things 00:36:14 remexre, calling openGL and other C interfaces is not difficult in several forths. Then it comes down to reasoning about your game mechanics which, I think, is easier to do in a DSL (written in forth) than most regular languages. Real issue only comes when you're pushing performance boundaries and then you probably need to go to C++. 00:36:30 There are a few game oriented platforms in forth already. 00:37:03 https://github.com/RogerLevy/RamenEngine is written in SwiftForth. 00:37:11 I meant why couldnt forth be a language of choice for high end games say 20 years down the line? 00:37:30 for developing game engines and games* 00:37:56 shynoob, in 20 years anything can be a choice but won't likely be. :-) 00:38:01 proteus-guy: using opengl 3 even? there's a lot with shaders <-> your game/engine that's disgustingly abi-dependent 00:38:17 shynoob, what kind of game are you talking about? 00:38:25 well, when I say "a lot" I mean struct layout 00:38:47 I've been doing vulkan for the past year or two and there it's /terrible/ 00:39:04 why stick with one type of game.. I meant stuff what you can do using unreal engine ... or most games that are in the market 00:40:01 --- join: xek_ joined #forth 00:40:05 unreal is the product of hundreds of thousands (probably millions?) of engineer-hours of work, though 00:40:15 remexre, are you aware of SciPy? They're python wrappers around super high-performance language-specific scientific libraries that are a PITA to build systems on top of. Having python wrappers allows scientists to just focus on their problem while it takes care of the lower level stuff. You could do a forth wrapper around unity or some other game engine in much the same way. 00:41:10 Almost the entire scientific community has standardized on SciPy now. 00:41:33 not matlab? 00:41:41 oh nvm 00:42:15 matplotlib provides an option for people migrating from matlab when it doesn't scale up. It's part of SciPy. 00:42:17 proteus-guy: yeah, I don't disagree that it's possible; by the time you've built this for opengl though, you've basically built a rendering engine, though? 00:42:48 though, thinking about it from that angle, bindings to ogre might be reasonable? 00:43:04 remexre, no you've build an modeling engine that uses that rendering engine. Well if you do it on top of OpenGL I guess so. But I'd do it on top of Unreal most likely. 00:43:27 remexre, correct. And what most games ultimately need is a great scripting language. Forth is ideal for it. 00:43:29 that's an interesting turn of events.. 00:43:55 instead of going low level.. we are going high level 00:44:06 of abstraction to work at 00:44:19 if my desire is to build games.. at the end.. works fine 00:44:22 shynoob, forth allows you to work at precisely the level you need ultimately. 00:44:41 this is amazing 00:44:48 why didnt I think of that.. 00:45:42 why bother with the redesigning ... reinventing the wheel.. everytime I want to develop a game.. why not just use the existing game engines.. and get better at using them ... like this .. 00:46:00 shynoob, just understand - building a full system on top of a platform like Unreal is a huge enterprise effort if you're trying to make a AAA game. It's akin to a movie production. Content is generally bigger effort than the game mechanics (script) itself. 00:46:13 I think that would be an ambitious project.. 00:46:14 yeah 00:46:52 I think I can start learning unreal.. and forth.. and start small.. and learn things..and implement.. little by little 00:47:17 if at all it seems possible 00:48:29 can you guys help me started? like know where to look for stuff etc.. 00:48:34 shynoob, for doing that first trick is getting your forth to call a C++ library easily. Different forths are easier than others for this. You might have to try a few til you find the one right for you. Also the concurrency model of your forth can make a big difference. You'll definitely need access to all your CPU cores. A single process cooperative threading forth is going to be difficult to scale. 00:49:14 I advise playing with the RamenEngine project for a while first. Then you can get a sense of all the logistics involved for any game. 00:49:40 I have 2 cores in my wooden laptop 00:50:15 I wont take heed to that particular advise 00:50:43 I intend to learn Forth and find out what is the difference between different forths.. and which one I'll be comfortable with 00:50:45 thanks 00:50:51 good luck 00:51:11 is it worth to buy swiftforth? 00:51:15 when you get something running at all post it here. be great to see some progress no matter how simple. 00:51:45 yeah sure.. 00:52:03 but the free version it offers.. can it work with unreal? 00:52:10 there's a free version you can try and then decide for yourself. I expect it's well worth buying. 00:52:41 yeah I have the free version... but I am not sure what the difference is between the free and the paid.. except the part that.. 00:52:52 shynoob, no idea. You'll have to see how easy/hard it is to call a C++ library with it. I don't know if such support is built in or you have to do it yourself. Most likely the latter. 00:52:54 I cant make executables and share 00:53:53 no I meant.. what's the actual difference between.. free and paid version 00:53:59 what can I do and what can't I do? 00:56:37 Looks like that's the major difference. Also they do have support for loading C libraries. See https://www.forth.com/swiftforth/ section "Libraries, Functions, Callbacks, and Threads". Of course calling C++ is something different. May have to have a small C lib that wraps your C++ model first. 00:57:36 You won't need the paid version until you build standalone executables you wanna distribute. 00:57:55 uh, also note, swiftforth appears to be 32-bit i386 only? which may or may not be an issue with unreal 00:58:09 oh, google says it is 00:58:37 er wiat, that's unity editor 00:58:38 * remexre shrugs 00:59:43 32 bit only? wow that's a surprise. 00:59:49 * proteus-guy is in a meeting now. 01:00:31 lol I will be in 12 hours... should probably get to bed 01:13:32 gn 01:13:56 welp its a layer on top of another layer.. dang 01:14:31 too many layers of abstraction ..and levels to deal with 01:15:47 proteus-guy hey I understand that I dont need the paid version if I dont wanna distribute my executables.. but can I use it with unreal or something with the free version.. directly..? 01:16:28 I guess I can run and stuff from the IDE .. will have to stick with the IDE.. all the time.. 01:16:59 damn I feel so unexperienced .. lacking of basic general knowledge 01:22:56 --- quit: shynoob (Ping timeout: 245 seconds) 01:57:09 --- join: X-Scale` joined #forth 01:57:53 --- quit: X-Scale (Ping timeout: 246 seconds) 01:58:04 --- nick: X-Scale` -> X-Scale 03:09:21 --- quit: jsoft (*.net *.split) 03:09:21 --- quit: proteusguy (*.net *.split) 03:09:21 --- quit: C-Keen (*.net *.split) 03:10:10 --- join: jsoft joined #forth 03:10:10 --- join: proteusguy joined #forth 03:10:10 --- join: C-Keen joined #forth 03:10:10 --- mode: tepper.freenode.net set +v proteusguy 03:31:43 --- quit: proteus-guy (Ping timeout: 256 seconds) 05:00:44 --- quit: xek_ (Ping timeout: 260 seconds) 06:39:58 --- join: shynoob joined #forth 06:41:03 so I was wondering .. will it really be tht helpful to create a forth wrapper around unreal engine.. it might only complicate things.. maybe? 06:41:46 https://forums.unrealengine.com/development-discussion/c-gameplay-programming/2720-why-c-for-unreal-4/page3?2574-Why-C-for-Unreal-4=&viewfull=1#post146265 06:42:39 remexre, proteusguy 06:45:41 shynoob, that's because unreal engine has to be a general purpose engine useful for all game development. you want/need a DSL that is specific to your game. forth is ideal for DSLs. 06:46:07 what is DSL 06:46:34 domain specific language 06:46:40 I see 06:46:47 the domain, in this case, being your game mechanics. 06:47:06 so using Forth for a specific implementation or instance or game? 06:47:25 using forth to create a language that makes it easy to implement your specific game. 06:47:45 that smh makes sense 06:48:06 btw how do you create a language using forth 06:48:07 all good forth programs consist of first creating a DSL for your problem using forth, them implementing the solution to your problem in your new DSL. 06:48:50 all words are equal in forth. any word you create is just as much a part of the language as the prior existing words, built in or otherwise. 06:49:26 cool 06:49:35 building words is what you do in forth. you create a new language by composing these words together, concatenating them and passing their data between each via the stack. 06:50:05 you can make your words as high level or low level as you need for your specific problem. 06:50:31 cool then I'll start by learning forth first and the existing words in it 06:50:54 read "Starting Forth" then "Thinking Forth" and you'll understand. Leo Brodie is the author and both are available freely in pdfs now. 06:51:02 cool 06:51:16 and then I'll have to establish a bridge between C++ 06:51:30 shynoob, yes - that's gonna require some effort. :-) 06:51:31 so will have to visit C++ and learn some of that 06:51:57 that's why starting out with a 2D game and using Ramen is likely a much better way to learn because you'll be able to make progress much sooner. 06:52:25 I believe.. C++ used in Unreal is different than the standard C++.. coz it approaches programming in a distinct way.. 06:52:30 or maybe I am wrong 06:52:39 No - it's standard C++. 06:52:55 yeah it is technically 06:53:04 it is really. 06:53:08 but.. smh the usage style 06:53:09 ohh 06:53:33 many ppl hate object oriented paradigm.. coz it complicates stuff for them.. 06:53:41 usage styles vary across most projects. I not aware of anything about Unreal that seems out of place, however. Don't recall anything. 06:54:22 People who hate certain things generally don't understand them. OO is perfectly fine architectural style. But few things claiming to be OO really are. 06:54:47 was reading this https://www.reddit.com/r/unrealengine/comments/7mn0ep/question_how_much_different_programming_c_in_ue4/ 06:56:16 They're just saying ue4 uses a lot of old style stuff. True but every old project uses a lot of old style stuff. However, UE5 is out now and has been modernized. 06:56:46 oh ok 06:57:39 Oh UE5 isn't actually released yet. Next year. 06:57:57 oh I thought they released it 06:58:09 oh first look 06:59:19 by the time it releases..I'll have gone thru some of forth and C++ .. I suppose.. so no harm 06:59:20 :D 06:59:45 yep. you've got plenty of time. write some 2D games first! 07:00:06 in ramen engine ? :P 07:00:39 sure 07:00:59 there's a pre-made environment designed to do specifically what you wanna do. 07:01:26 I saw some of the 3d game dev process.. in unreal.. it isnt more scary than 2d game dev process.. much.. 07:01:55 I mean.. they use blueprint and stuff which helps a lot I guess 07:01:59 to imagine 07:02:02 and manage 07:02:03 maybe 07:02:17 everything just seems like dealing with layers of abstraction 07:02:29 that's what programming is 07:02:30 with complex relations 07:02:40 hm 07:02:45 it's managing and eliminating complexity 07:11:14 pdf is not available for swift forth 2nd edition? only online? 07:11:29 I dunno 07:26:59 --- join: xek_ joined #forth 07:40:07 --- join: chewb joined #forth 07:51:03 --- quit: xek_ (Ping timeout: 258 seconds) 07:57:21 --- join: xek_ joined #forth 08:00:21 --- quit: Zarutian_HTC1 (Read error: Connection reset by peer) 08:00:43 --- join: Zarutian_HTC joined #forth 08:05:16 --- quit: Zarutian_HTC (Ping timeout: 256 seconds) 08:06:21 --- quit: jackdaniel (Remote host closed the connection) 08:06:32 --- join: jackdaniel joined #forth 08:07:45 --- quit: xek_ (Ping timeout: 240 seconds) 08:58:31 --- quit: crab1 (Ping timeout: 265 seconds) 09:19:15 --- quit: jsoft (Remote host closed the connection) 09:23:55 --- join: jsoft joined #forth 09:29:43 --- join: Zarutian_HTC joined #forth 09:37:11 --- quit: chewb (Ping timeout: 265 seconds) 09:44:18 --- join: chewb joined #forth 10:04:59 --- part: shynoob left #forth 11:42:17 --- quit: spoofer (Quit: leaving) 11:47:06 --- quit: gravicappa (Read error: Connection reset by peer) 11:47:15 --- quit: remexre (Read error: Connection reset by peer) 11:47:32 --- join: remexre joined #forth 11:52:14 --- join: gravicappa joined #forth 11:52:37 --- join: spoofer joined #forth 12:02:31 --- join: xek_ joined #forth 14:02:25 --- quit: gravicappa (Ping timeout: 256 seconds) 14:04:01 --- join: WickedShell joined #forth 14:41:21 --- quit: xek_ (Ping timeout: 240 seconds) 14:59:06 --- join: dave0 joined #forth 16:28:35 --- quit: Keshl (Read error: Connection reset by peer) 16:29:00 --- join: Keshl joined #forth 16:40:47 --- quit: jsoft (Ping timeout: 264 seconds) 16:44:01 --- quit: X-Scale (Quit: HydraIRC -> http://www.hydrairc.com <- \o/) 17:07:41 --- join: qih joined #forth 17:14:59 --- join: crab1 joined #forth 17:31:57 --- quit: chewb (Read error: Connection reset by peer) 17:50:37 --- quit: djinni (Quit: Leaving) 18:04:06 --- quit: crab1 (Ping timeout: 240 seconds) 18:15:15 --- join: boru` joined #forth 18:15:18 --- quit: boru (Disconnected by services) 18:15:20 --- nick: boru` -> boru 19:03:05 Hi, I am reading 'Thinking Forth' (Again) and wanted to ask for guidance on a modern, compliant Forth to install & experiment with? As a refresher. 19:03:50 I found the '4tH' site and quite like it, but others may have a better take. 19:07:42 qih, I don't think you'll get many arguments against most forths you come across. More importantly is what kind of platform you're targeting and what kind of applications you wanna build. 19:15:47 I was using Mecrisp-Stellaris on ARM a few years ago with no viable use case. But I am focusing on using RPi v3/4 running Raspbian to do sensing networks & motor controlling. 19:16:06 But I am *now* focusing ... 19:58:27 --- quit: dave0 (Quit: dave's not here) 20:28:39 qih, that's a popular and actively supported forth. Don't think you can go wrong there. 20:40:41 --- join: tabemann joined #forth 20:41:09 --- quit: WickedShell (Remote host closed the connection) 20:45:01 proteusguy: good call, thank you. 20:45:17 I should have packed my laptop so I could code on my vacation 20:46:46 Only software developers equate Coding & Vacation ... I get that 8-) 20:46:54 lol 20:47:05 --- join: gravicappa joined #forth 20:50:58 --- quit: tabemann (Remote host closed the connection) 20:51:21 --- quit: gravicappa (Ping timeout: 240 seconds) 20:52:06 --- join: tabemann joined #forth 20:56:49 tabemann: wb, so that was the vacation, eh? 21:01:39 going to the coast of Oregon 21:02:33 had to go through Portland to get here 21:02:44 * proteusguy can't imagine going anywhere without his laptop for any length of time. 21:03:28 didn't see any protestors or riot police though 21:03:41 thankfully 21:04:36 tabemann, where you traveling from? 21:04:55 milwaukee 21:05:09 quite a drive. 21:05:36 went by train for most of the way 21:05:53 tabemann, wow cool. was it one of those scenic trains? 21:08:39 there were parts that were quite scenic (Glacier National Park, Mt. Hood), while there were other stretches that were less so (eastern Montana) 21:10:23 tabemann, how long's the ride? mind if I ask about how much such a ticket costs? 21:11:08 a total of about two days 21:13:22 I don't know offhand what a ticket costs since I didn't buy a ticket at its normal cost but rather in part with train miles gotten with a credit card 21:15:04 but what I do know is the cost I got it at was steeply discounted as a result 21:16:49 two days is a long ride. sounds like a nice adventure if the ride is comfy. in Europe I much prefer taking the trains over airlines. also is a great coding environment I find. given airports and obnoxious security and tightly packed planes, maybe USA is in for a train resurgence. 21:18:16 proteusguy: Fair point re Rail, but the Road Transport network is king in the US, same with AU & NZ. So Rail will never be more than an alternative in every sense of the word. 21:18:35 I'd love to travel by Rail in Europe, no damn driving. 21:19:37 the problem with trains in the US is that passenger trains get lower priority than freight trains on many parts of the rail network 21:21:11 tabemann, so you were sitting still for a good part of that travel time I gather? 21:21:37 yeah 21:21:47 qih, indeed. certainly not viable if you're in a rush. 21:22:03 reading, watching the scenery 21:22:28 tabemann, 2 days is just enough time to port a forth to a new target platform. ;-) 21:23:05 * proteusguy just got pattern matching mechanics working in his ActorForth. Now to get the compiler to recognize/generate it. 21:23:09 --- join: cheers joined #forth 21:24:18 with zeptoforth, porting it to another M4 impl. should take about only half a day 21:26:47 (well at least if Mecrisp-Stellaris also implements it - lol) 21:26:50 self driving cars will save us all! 21:27:13 proteusguy: One can only hope 21:27:32 unless they're made by Uber or Tesla 21:28:28 * proteusguy wants a Tesla Model S realllly bad. 21:29:04 I'd be happy with a Gen 3 Nissan Leaf tbh. 21:29:15 my boss is scary when he drives his Tesla 21:29:56 Awesome ... o_0 21:33:04 I made the mistake of being in his car (which was before I was told of his driving habits) - I had to try hard to keep calm as it seemed like he'd either get us or someone else killed 21:34:38 bbiab 21:34:39 Ah that'd be a good opportunity for a covert '911' call ... 21:34:41 k 21:41:51 back 21:43:32 of course the fact that teslas have incredible acceleration capacity did not help 21:44:54 Guess so, some people should only ever drive a Toyota Echo 21:51:04 tabemann: So are you actively using zeptoforth? 21:52:42 not for anything, more for development for development's sake right now 21:53:54 --- join: jedb_ joined #forth 21:55:10 right now it is pretty usable but has a few major gaps 21:56:40 --- quit: jedb (Ping timeout: 260 seconds) 21:56:53 e.g. no double-cell or fixed-point parsing, a rather slow impl of ln 21:57:48 --- join: jedb__ joined #forth 21:57:49 OK makes sense. 22:00:06 --- quit: jedb_ (Ping timeout: 240 seconds) 22:01:35 --- quit: tabemann (Remote host closed the connection) 22:18:33 --- quit: qih (Quit: leaving) 22:19:25 --- join: jsoft joined #forth 22:25:34 hehe, see above comment about making forths being much more popular than making programs in Forth :P 22:35:58 MrMobius, seems that the most fun forth program to write is another forth. ;-) 22:50:57 --- quit: proteusguy (Ping timeout: 240 seconds) 22:51:33 --- join: proteusguy joined #forth 22:51:33 --- mode: ChanServ set +v proteusguy 23:59:59 --- log: ended forth/20.07.20