Hello,
I found the following amazing lecture that present a new idea of a development tool, that I think will interest you all:
Enjoy
Ido

Mailing lists / fpc-pascal / 2012-02
20 messages · 13 people · –
Reply by email Subscribe to this list Your subscription
Read-only archive. Use j and k to move between messages.
Hello,
I found the following amazing lecture that present a new idea of a development tool, that I think will interest you all:
Enjoy
Ido
ik wroteI found the following amazing lecture that present a new idea of a development tool, that I think will interest you all: http://vimeo.com/36579366
Impressive, indeed. And I am usually not that easily impressed.
Vinzent.
2012/2/26 Vinzent Höfler
Yes it is!
Has this one guy made himself all the tools he demonstrated? He is quite a super-human then. :)
Juha
Impressive, indeed. And I am usually not that easily impressed. Vinzent.
Impressed indeed. But IMHO limited to a certain kind of programming. The binary search part could probably be done for any kind of programming, I suppose.
I don't see him doing this in huge corporate administrative business programs where hundreds of database tables are involved. They are hard to connect to or visualize :-)
But visionary nonetheless.
Michael.
I doubt that "any kind of programming".
He showed the simplest case: a function that only receives base types. But most functions work on complex parameters - classes. These need to be set up.
Either by writing a test environment or by taking a snapshot with the debugger. Then you can run the function repeatedly.
The next step is to "compile" the function on every change. Easy with an interpreter.
How to compile only one function of a big program and insert/replace it?
The next step is to run the function and read every value change. Easy in an interpreter.
For a compiled program you have to single step with the debugger.
+1
Mattias
Impressed indeed. But IMHO limited to a certain kind of programming. The binary search…
Michael Van Canneyt wroteI don't see him doing this in huge corporate administrative business programs where hundreds of database tables are involved.
and that tables can contain billion of rows ... so visualisation won't be so snappy :)
zeljko
It depends on your tests. That visualization is for test driven development (http://en.wikipedia.org/wiki/Test-driven_development).
In Ruby I use Cucumber for such things, and then you can provide also a table with possible values to see how it will react.
That was the seventh message on a subject which is not related to FPC in any recognizable way. Although not a very frequent poster, I still need to be on this list because I chose FPC for some of my professional work, and I usually learn a lot from following some of the discussions on the list. Why does this type of discussion not go on fpc-other?
I know I'm not a moderator or anything. I am just very busy and really just beg you to respect my decision to be on the "fpc-pascal" list and not "visions-other".
Thanks,
R.
I am just very busy and really just beg you to respect my decision to be on the "fpc-pascal" list and not "visions-other".
Then why don't you simply ignore (delete) the posts with the subject "Amazing new development tools"?
That's what I am doing: Just open posts which look interesting to me from the subject line.
I doubt that anybody else (a moderator) can do this selection for me by sorting such posts into categories.
In the end it's the same as a spam filter: It does not work.
It depends on your tests. That visualization is for test driven development…
That is childs play; good for some simple website stuff.
We're talking corporate RDBMS here.
Take a school. To be able to test for example data entry of a pupil who comes to inscribe, I need to create and set up the whole eco-system for my pupil:
- Table with schools
- Table with countries
- Table with cities
- Table with addresses
- Table with nationalities
- Tables with values for all kinds of parameters.
- Table with groups in my school.
- Table with teaching subjects.
- Table with teachers teaching the subject.
All these tables have constraints, time dependencies, whatnot.
I cannot even start testing anything pupil-related without having properly set up all this first :/
To be able to visualize or test all that, you need detailed knowledge of the system; a simple "test table with possible values" is unusable; all tables are linked together somehow. For the same reason I never understood the use of 'test data generators' functionalities in database modeling tools. The generated data is utterly useless...
Michael.
Then why don't you simply ignore (delete) the posts with the subject "Amazing new…
The whole reason we have four different lists is to minimise cases where people have to do that. This topic indeed belongs on the fpc-other list, not on fpc-pascal (since it's not about programming in or getting help with FPC).
Jonas
FPC mailing lists admin
That is childs play; good for some simple website stuff. We're talking corporate RDBMS…
I haven't viewed the video yet, I will
everybody's comments, it sounds very interesting.
Regarding your comment on data generators. I can say that I have (in our company product) a very similar data structure as you described above. I have created a "data generator" for our product and it does work with our complex data model. It generates realistic data, not just random text garbage (that is indeed useless - maybe this is what you were referring too). We used the data generator for performance testing. Populating for example our Learner table with 500 000 learners (and there related data - like addresses, subjects, schools etc), and then see where any bottlenecks occur in our UI or SQL.
I think tiOPF's demo 21 uses a similar data generator to what I created in our Master Maths product. Our company product just uses a much greater scale of generated data. So bottom line - a realistic data generator can be very useful.
On Sun, 26 Feb 2012 11:43:38 +0100 (CET) I doubt that "any kind of programming". He…
Sorry for a plug, but MS VC++ 6.0 (!)* allowed for Pause->Edit Code-> Quick compile->Resume Execution kind of workflow...
Yes, in Debug/Pause mode, you COULD write a {code block} and then go Debug->Apply and Continue (or something like that) and voila, you could totally change code paths ...
(Not that I know much about internals/constraints of this, to be honest, but of all, i found that a very cool feature)
Is there a way to add THAT to FPC/Lazarus/GDB world ?
(especially simulation/image/OpenGL Artists would be grateful :) )
Lukasz
* Yes, Microsoft Visual C++ Six Point Zero. Mine (dating from before my times where I work now) is from 1998. *
Apple supported that in older versions of their development tools, and it worked as well (or as badly) with FPC as it did with GCC. It required changes to their dynamic linker (for the code replacement) and to GDB. It was extremely flakey and limited though, and they abandoned it fairly quickly.
Since the required support is generally not part of the compiler but of the environment (you need a way to inject the new code, and possibly data, into the process, and link up everything with the new version), I don't think this is something that can be added as an "FPC" feature.
Jonas
Sorry for a plug, but MS VC++ 6.0 (!)* allowed for Pause->Edit Code-> Quick…
I wonder where the limits of that are.
Sure one *could* record *all* variables, and the callstack... But what if
- you add a new variable, what to initialize it with?
- remove the function that called the current code, or even delete the line where you just paused?
Or one could record all input, and replay the app. But that has limits too.
Neither of those are likely to happen....
btw on some platforms, gdb can step backwards (again limitations apply). But it's not integrated in Lazarus yet...
Apple supported that in older versions of their development tools, and it worked as well…
(Un)fortunately I don't know much about the internals, as I mentioned :)
The closest idea that looks similar is a loadable library: you can unload a dll (or a .so), edit/recompile/rebuild it while the caller program is paused/waiting, then reload it (with an obvious constraint that you can't modify the interfaces that the already-running program knows)
- now imagine each code/data block is separate 'object' that can be loaded/unloaded...?
(Did I just hit on the unmentionable feature of loadable modules :) )
Lukasz
That is basically what Apple did. But if you want to do that at a reasonable speed and with support for e.g. existing addresses in memory (someone may have taken the address of a routine you are about to replace, and if the new code is larger it may get stored somewhere else), then you need lots of extra support (e.g. via trampolines for code; for data it's even harder). Not to mention that your debugger has to be able to deal with code changing addresses all the time and debug info changing.
In the end, people spent more time debugging the inconsistencies and limitations of "fix and continue" than it helped them. Maybe Microsoft's implementation is better, but
a) it is extremely hard to get right
b) as mentioned, it cannot be implemented in FPC itself; it mainly requires support from a lot of other things (and if that support is in place and requires some help from the compiler, then we can talk about making FPC support such an environment)
Jonas
I wonder where the limits of that are. Sure one *could* record *all* variables, and the…
Noting what I described looking at in
http://lists.freepascal.org/lists/fpc-other/2012-February/000670.html, I found myself wondering whether the IDE could tweak (writable?) constants at runtime, or possibly closures once they exist.
Being able to tune e.g. the exact position of visible components could be rather useful.
The evaluate dialog, offers a way to change values. Yes it is not at all comfortable ...
And be warned, it performs no checks. Trying to change managed types (string, dyn array) will almost certainly crash your app.
I guess, if you have a Form you can change it's values. Only to make those thinks visible on screen, it is not enough to change them. You need to call the setter. And calling functions from the debugger is not yet there...
-----
If you work on the IDE itself try the package IdeInspector (it adds itself to "view" > "Ide Internals" if installed)
Thanks, noted. I must admit that I've never really "got my head around" evaluation of anything other than simple variables, but I'm sure that's because I've not spent enough time really getting to grips with it.
----- If you work on the IDE itself try the package IdeInspector (it adds itself to "view" > "Ide Internals" if installed)
Thanks, I'll make a point of looking at that, but it leads my into another question which I'll post in the Lazarus ML since I think it's out of place here.