-
21. Data: 2012-02-13 10:01:35
Temat: Re: [spam] ProCalc
Od: bartekltg <b...@g...com>
W dniu 2012-02-12 20:42, Wojciech "Spook" Sura pisze:
> Dnia 12-02-2012 o 20:32:11 bartekltg <b...@g...com> napisał(a):
>>> O ile to jest C++, to nas tu by
>>> znacznie bardziej interesowało to jakie techniki zostały zastosowane do
>>> napisania tego programu (co do czego zostało użyte, jakie wzorce
>>> projektowe itd) niż sam fakt dostępności nowego kalkulatora.
>>
>> Przyłączam się do pytania o techniczne informatyczne bebechy.
>
> C# + C++. W C++ napisany jest silnik liczący wyrażenia matematyczne
> (kompilator i interpreter) oraz rysowanie wykresów 2D i 3D przy pomocy
Właśnie o tą cześć mi chodziło. Jak rozbierasz tekstowe
wyrażenie, jak je potem przetwarzasz i obliczasz.
Jakiś gotowy parser? Napisany od podstaw?
> Direct2D i Direct3D (API DirectX 11, ale działa w trybie zgodności z
> 9.0c, stąd wygórowane wymagania runtime'ów, ale niskie - karty
> graficznej). C# - GUI i ogólnie kwestie interakcji z użytkownikiem.
> Korzystam z WF, bo łatwo można się dogadać z zewnętrzną biblioteką
> natywną, która dostaje HWND i więcej jej do szczęścia nie potrzeba.
> Komunikacja świata zarządzanego z natywnym przez P/invoke.
>
> Jeśli masz jakieś szczegółowe pytania, to się nie wahaj :)
Pewnie przyjdą kolejne;)
pzdr
bartekltg
-
22. Data: 2012-02-13 14:30:22
Temat: Re: [spam] ProCalc
Od: n...@m...invalid
W dniu 12.02.2012 r. 12:19, Wojciech "Spook" Sura pisze:
> Hej!
>
> [Crosspost na pl.c.p i pl.c.l.c, FUT na pl.c.p]
>
> Wczoraj późnym wieczorem wypuściłem wreszcie pierwszą wersję mojego
> kalkulatorka dla power-userów.
<snips />
> Wymagania:
> - .NET Framework 4 (
> http://www.microsoft.com/download/en/details.aspx?id
=17851 )
Czy testowałeś pod Mono?
> Do rysowania wykresów:
> - Windows 7
> - Runtime'y DirectX 11 (
> http://www.microsoft.com/download/en/details.aspx?id
=8109 )
> - Karta graficzna zgodna z DirectX 9.0c (wszystkie współczesne, w tym
> większość zintegrowanych).
-
23. Data: 2012-02-13 16:48:18
Temat: Re: [spam] ProCalc
Od: "Wojciech \"Spook\" Sura" <s...@s...op.pl>
Dnia 13.02.2012 o 11:01 bartekltg <b...@g...com> napisał(a):
> W dniu 2012-02-12 20:42, Wojciech "Spook" Sura pisze:
>> Dnia 12-02-2012 o 20:32:11 bartekltg <b...@g...com> napisał(a):
>>>> O ile to jest C++, to nas tu by
>>>> znacznie bardziej interesowało to jakie techniki zostały zastosowane
>>>> do
>>>> napisania tego programu (co do czego zostało użyte, jakie wzorce
>>>> projektowe itd) niż sam fakt dostępności nowego kalkulatora.
>>>
>>> Przyłączam się do pytania o techniczne informatyczne bebechy.
>>
>> C# + C++. W C++ napisany jest silnik liczący wyrażenia matematyczne
>> (kompilator i interpreter) oraz rysowanie wykresów 2D i 3D przy pomocy
>
> Właśnie o tą cześć mi chodziło. Jak rozbierasz tekstowe
> wyrażenie, jak je potem przetwarzasz i obliczasz.
> Jakiś gotowy parser? Napisany od podstaw?
Wszystko mam napisane od zera. Tokenizer wygenerowałem własnym programem
(sprzedajesz mu serię wyrażeń regularnych, on produkuje bardzo szybki
tokenizer rozpoznający te wyrażenia); wiem o istnieniu Flexa i Bisona, ale
Flex mnie doprowadzał do szału tym, że produkował gotowy program, gdy mój
programik generuje klasę lub zestaw funkcji. Generator tokenizerów kiedyś
prezentowałem na grupach, ale nie spotkał się z większym zainteresowaniem.
Parser działa prosto, na zasadzie ONP i produkuje "skompilowane" i
zoptymalizowane wyrażenie, które można potem błyskawicznie (i
wielokrotnie) obliczyć, bez dalszego parsowania. Dzięki temu można oglądać
zmiany wykresu 3D na bieżąco, a to jest obliczenie wyrażenia 10 000 (czyli
100 x 100) razy kilka (kilkanaście) razy na sekundę. Wprowadziłem też
takie patenty jak zmienne zewnętrzne i parametry wywołania, to też
przyspiesza seryjne obliczenia.
> pzdr
> bartekltg
Pozdrawiam -- Spook.
--
! ._______. Warning: Lucida Console sig! //) !
! || spk || www.spook.freshsite.pl / _ """*!
! ||_____|| spook at op.pl / ' | ""!
! | ___ | tlen: spoko_ws gg:1290136 /. __/"\ '!
! |_|[]_|_| May the SOURCE be with you! \/) \ !
-
24. Data: 2012-02-13 16:50:29
Temat: Re: [spam] ProCalc
Od: "Wojciech \"Spook\" Sura" <s...@s...op.pl>
Dnia 13.02.2012 o 15:30 <n...@m...invalid> napisał(a):
>> Wymagania:
>> - .NET Framework 4 (
>> http://www.microsoft.com/download/en/details.aspx?id
=17851 )
> Czy testowałeś pod Mono?
Nie zadziała, korzystam z Windows Forms.
Pozdrawiam -- Spook.
--
! ._______. Warning: Lucida Console sig! //) !
! || spk || www.spook.freshsite.pl / _ """*!
! ||_____|| spook at op.pl / ' | ""!
! | ___ | tlen: spoko_ws gg:1290136 /. __/"\ '!
! |_|[]_|_| May the SOURCE be with you! \/) \ !
-
25. Data: 2012-02-13 17:03:24
Temat: Re: [spam] ProCalc
Od: "Jordan Szubert" <u...@j...us.to>
Dnia 13-02-2012 o 17:48:18 Wojciech "Spook" Sura <s...@s...op.pl>
napisał(a):
[...]
>
> Wszystko mam napisane od zera. Tokenizer wygenerowałem własnym programem
> (sprzedajesz mu serię wyrażeń regularnych, on produkuje bardzo szybki
> tokenizer rozpoznający te wyrażenia); wiem o istnieniu Flexa i Bisona,
> ale Flex mnie doprowadzał do szału tym, że produkował gotowy program,
> gdy mój programik generuje klasę lub zestaw funkcji. Generator
> tokenizerów kiedyś prezentowałem na grupach, ale nie spotkał się z
> większym zainteresowaniem.
przypomnisz?
> Parser działa prosto, na zasadzie ONP i produkuje "skompilowane" i
> zoptymalizowane wyrażenie, które można potem błyskawicznie (i
> wielokrotnie) obliczyć, bez dalszego parsowania. Dzięki temu można
> oglądać zmiany wykresu 3D na bieżąco, a to jest obliczenie wyrażenia 10
> 000 (czyli 100 x 100) razy kilka (kilkanaście) razy na sekundę.
> Wprowadziłem też takie patenty jak zmienne zewnętrzne i parametry
> wywołania, to też przyspiesza seryjne obliczenia.
"skompilowane" znaczy do MSIL, x86 czy co?
[...]
--
Jordan Szubert
-
26. Data: 2012-02-13 17:04:45
Temat: Re: [spam] ProCalc
Od: " " <f...@g...pl>
Wojciech \Spook\ Sura <s...@s...op.pl> napisał(a):
> Dnia 13.02.2012 o 11:01 bartekltg <b...@g...com> napisa=B3(a):
>
> > W dniu 2012-02-12 20:42, Wojciech "Spook" Sura pisze:
> >> Dnia 12-02-2012 o 20:32:11 bartekltg <b...@g...com> napisa=B3(=
> a):
> >>>> O ile to jest C++, to nas tu by
> >>>> znacznie bardziej interesowa=B3o to jakie techniki zosta=B3y zastos=
> owane =
>
> >>>> do
> >>>> napisania tego programu (co do czego zosta=B3o u=BFyte, jakie wzorc=
> e
> >>>> projektowe itd) ni=BF sam fakt dost=EApno=B6ci nowego kalkulatora.
> >>>
> >>> Przy=B3=B1czam si=EA do pytania o techniczne informatyczne bebechy.
> >>
> >> C# + C++. W C++ napisany jest silnik licz=B1cy wyra=BFenia matematycz=
> ne
> >> (kompilator i interpreter) oraz rysowanie wykres=F3w 2D i 3D przy pom=
> ocy
> >
> > W=B3a=B6nie o t=B1 cze=B6=E6 mi chodzi=B3o. Jak rozbierasz tekstowe
> > wyra=BFenie, jak je potem przetwarzasz i obliczasz.
> > Jaki=B6 gotowy parser? Napisany od podstaw?
>
> Wszystko mam napisane od zera. Tokenizer wygenerowa=B3em w=B3asnym progr=
> amem =
>
> (sprzedajesz mu seri=EA wyra=BFe=F1 regularnych, on produkuje bardzo szy=
> bki =
>
> tokenizer rozpoznaj=B1cy te wyra=BFenia); wiem o istnieniu Flexa i Bison=
> a, ale =
>
> Flex mnie doprowadza=B3 do sza=B3u tym, =BFe produkowa=B3 gotowy program=
> , gdy m=F3j =
>
> programik generuje klas=EA lub zestaw funkcji. Generator tokenizer=F3w k=
> iedy=B6 =
>
> prezentowa=B3em na grupach, ale nie spotka=B3 si=EA z wi=EAkszym zainter=
> esowaniem.
>
> Parser dzia=B3a prosto, na zasadzie ONP i produkuje "skompilowane" i =
>
> zoptymalizowane wyra=BFenie, kt=F3re mo=BFna potem b=B3yskawicznie (i =
>
> wielokrotnie) obliczy=E6, bez dalszego parsowania. Dzi=EAki temu mo=BFna=
> ogl=B1da=E6 =
>
> zmiany wykresu 3D na bie=BF=B1co, a to jest obliczenie wyra=BFenia 10 00=
> 0 (czyli =
>
> 100 x 100) razy kilka (kilkana=B6cie) razy na sekund=EA. Wprowadzi=B3em =
> te=BF =
>
> takie patenty jak zmienne zewn=EAtrzne i parametry wywo=B3ania, to te=BF=
> =
>
> przyspiesza seryjne obliczenia.
>
podstawowe pytanie ile lini kodu ma ten prog (w calosci)?
15 tys?
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
27. Data: 2012-02-13 17:43:04
Temat: Re: [spam] ProCalc
Od: n...@m...invalid
W dniu 13.02.2012 r. 17:50, Wojciech "Spook" Sura pisze:
> Dnia 13.02.2012 o 15:30 <n...@m...invalid> napisał(a):
>>> Wymagania:
>>> - .NET Framework 4 (
>>> http://www.microsoft.com/download/en/details.aspx?id
=17851 )
>> Czy testowałeś pod Mono?
> Nie zadziała, korzystam z Windows Forms.
To rzeczywiście calc.exe+ :-P
-
28. Data: 2012-02-13 17:44:15
Temat: Re: [spam] ProCalc
Od: Roman W <b...@g...pl>
On Monday, February 13, 2012 4:48:18 PM UTC, Wojciech Spook Sura wrote:
[opis parsera]
Fajne, wiele firm w City byloby zainteresowane takimi rzeczami.
RW
-
29. Data: 2012-02-13 18:00:07
Temat: Re: [spam] ProCalc
Od: "Wojciech \"Spook\" Sura" <s...@s...op.pl>
Dnia 13.02.2012 o 18:03 Jordan Szubert <u...@j...us.to> napisał(a):
> Dnia 13-02-2012 o 17:48:18 Wojciech "Spook" Sura
> <s...@s...op.pl> napisał(a):
>
> [...]
>>
>> Wszystko mam napisane od zera. Tokenizer wygenerowałem własnym
>> programem (sprzedajesz mu serię wyrażeń regularnych, on produkuje
>> bardzo szybki tokenizer rozpoznający te wyrażenia); wiem o istnieniu
>> Flexa i Bisona, ale Flex mnie doprowadzał do szału tym, że produkował
>> gotowy program, gdy mój programik generuje klasę lub zestaw funkcji.
>> Generator tokenizerów kiedyś prezentowałem na grupach, ale nie spotkał
>> się z większym zainteresowaniem.
>
> przypomnisz?
Proszę...
http://www.spook.freshsite.pl/Temporary/spg.zip
W środku jest readme z informacją, w jaki sposób formatować plik
wejściowy. Generuje kod w C++, ale można go dosyć łatwo przepisać na inny
język (ja przepisywałem na Javę i C#)
>> Parser działa prosto, na zasadzie ONP i produkuje "skompilowane" i
>> zoptymalizowane wyrażenie, które można potem błyskawicznie (i
>> wielokrotnie) obliczyć, bez dalszego parsowania. Dzięki temu można
>> oglądać zmiany wykresu 3D na bieżąco, a to jest obliczenie wyrażenia 10
>> 000 (czyli 100 x 100) razy kilka (kilkanaście) razy na sekundę.
>> Wprowadziłem też takie patenty jak zmienne zewnętrzne i parametry
>> wywołania, to też przyspiesza seryjne obliczenia.
>
> "skompilowane" znaczy do MSIL, x86 czy co?
> [...]
Na mój wewnętrzny format :) Dlatego "skompilowane" w cudzysłowiu.
Wyrażeniem przechowywanym w ten sposób można potem nakarmić interpreter,
który je obliczy.
Pozdrawiam -- Spook.
--
! ._______. Warning: Lucida Console sig! //) !
! || spk || www.spook.freshsite.pl / _ """*!
! ||_____|| spook at op.pl / ' | ""!
! | ___ | tlen: spoko_ws gg:1290136 /. __/"\ '!
! |_|[]_|_| May the SOURCE be with you! \/) \ !
-
30. Data: 2012-02-13 18:24:39
Temat: Re: [spam] ProCalc
Od: "Wojciech \"Spook\" Sura" <s...@s...op.pl>
Dnia 13.02.2012 o 18:04 <f...@g...pl> napisał(a):
> podstawowe pytanie ile lini kodu ma ten prog (w calosci)?
> 15 tys?
Dlaczego podstawowe? Prawdę mówiąc, nigdy się nad tym mocniej nie
zastanawiałem :)
Ale zaspokoję Twoją ciekawość. Razem z pustymi liniami i komentarzami (ale
to jest jakiś niewielki odsetek całego kodu).
C++:
Sam kompilator + interpreter wyrażeń matematycznych (lib): 15 625
GraphDrawer2D: 2 507
GraphDrawer3D: 3 256
ProCalc.Engine: 1 504
C#:
ProTools.Common: 2 282
ProCalc.Core: 1 516
ProCalc: 10775
W sumie około 37 465
Powyższe wartości są mocno szacowane, ponieważ należałoby do tego wliczyć
na przykład program do generowania tokenizerów, który też ma kilka tysięcy
linijek (a za pomocą którego generowałem tokenizery dla silnika); ponadto
wartości C# są nieco zawyżone, bo wliczyłem pliki .designer.cs, które po
części pisałem ja, a po części były generowane automatycznie.
Ale daje to jakiś obraz wielkości projektu.
Pozdrawiam -- Spook.
--
! ._______. Warning: Lucida Console sig! //) !
! || spk || www.spook.freshsite.pl / _ """*!
! ||_____|| spook at op.pl / ' | ""!
! | ___ | tlen: spoko_ws gg:1290136 /. __/"\ '!
! |_|[]_|_| May the SOURCE be with you! \/) \ !