From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id LAA08408; Tue, 23 Jul 2002 11:51:58 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id LAA08489 for ; Tue, 23 Jul 2002 11:51:57 +0200 (MET DST) Received: from dewberry.cc.columbia.edu (dewberry.cc.columbia.edu [128.59.59.68]) by nez-perce.inria.fr (8.11.1/8.11.1) with ESMTP id g6N9pu504653 for ; Tue, 23 Jul 2002 11:51:56 +0200 (MET DST) Received: from there (tw304h3.cpmc.columbia.edu [156.111.84.180]) by dewberry.cc.columbia.edu (8.9.3/8.9.3) with SMTP id FAA15922; Tue, 23 Jul 2002 05:51:53 -0400 (EDT) Message-Id: <200207230951.FAA15922@dewberry.cc.columbia.edu> From: Oleg To: Alessandro Baretta , Ocaml Subject: Re: [Caml-list] Rule based language [was: productivity improvement] Date: Tue, 23 Jul 2002 05:53:52 -0400 X-Mailer: KMail [version 1.3.2] References: <20020716172916.4903.qmail@web10702.mail.yahoo.com> <200207210059.UAA17003@dewberry.cc.columbia.edu> <3D3AB082.2080503@baretta.com> In-Reply-To: <3D3AB082.2080503@baretta.com> MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary="------------Boundary-00=_ST4PJOLO04EOYIZ3INCD" Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk --------------Boundary-00=_ST4PJOLO04EOYIZ3INCD Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit On Sunday 21 July 2002 09:00 am, Alessandro Baretta wrote: > Oleg wrote: > > Alex, > > > > This looks pretty simple. What makes you think the program is a > > compelling evidence of O'Caml superior productivity? > > 197 lines of code, including whitespace and commments. I > think it is a pretty clear example of how you can write cool > software in O'Caml in a very short time. If you had not been > "lazy", as you said, and had tried implementing the same > language in C++, I strongly doubt you could have written a > more compact source. 109 LOC in C++ counting blank lines and lines containing a single '}'. See atttached files. A few notes about the differences between your O'Caml program and my C++ program: 1) I'm not using Yacc or Lex for parsing, because I'm not familiar with these tools, so ugly parsing takes up most of those 109 LOC (Parsing things is peripheral to my professional interests right now. I don't write compilers) 2) I decided not to implement the "simple" keyword, because I did not understand what it was supposed to mean (a depth limit on deduction, I'm guessing, but what for?) 3) Your program fails to imlement multi-token post-conditions in rules and mutli-token goals (as described in your formal language specification) 4) The algorithms are different I think, resulting in, for example, about 200x speed improvement for the attached test.input file on my P3-800MHz (g++-3.0 vs ocamlopt) (The output is identical). The O'Caml program convergence seems to be quite unstable. Sometimes it is as fast or even faster than the C++ program. I can see how the same algorithm can be implemented in ~100 LOC of O'Caml too. However, IMO as this and the previous examples show, reports about extreme LOC ratios are premature. Cheers, Oleg --------------Boundary-00=_ST4PJOLO04EOYIZ3INCD Content-Type: application/x-gzip; name="test.input.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test.input.gz" H4sICNMQPT0AA3Rlc3QuaW5wdXQAld1ZziQ7ciXg91xFLSHoE52VUO+lABUaAiQ10FXav4J+b5Dn i0wC0lv+GRE+kEYbjh0z+///9e9//8ff//nXH+Uv//aPv/zr3/75X/+xtfaXv/3nv/7xx7Wd8487 /nnnl/Z9/lEOPqnzj7Nu8bXrij/O+Np1l7jPHl87t7j0uecf+cznHQ/azvijtnibPV/tOOPZtisv kA967Mdf/uX//PlBPX7+2May7S3e4cg/tnyEY7sWN9pbPkJeoL2OWJ74fWOprvjJnmvdXi3XOn5S 8pFjE6+aq3YfuWpx//q+5Wc5att+/tjncpy5I/k0e4nnvF9x1zu3dMufHPk28TTn/Yo/rvL7Zarn a7GY7cqX3uOltxS8lg/Tcp/2lKg7fnLdceWay8ld7liLUrl/XPjMval7ykkKccujd+R73ltcuhy5 AnmQ+0t/9vM4Xj9/HGM/z1zQKzf3fsXzHPmtkifnTFnL454n73iv7XiA8j5f53iAo+QF8k3PK59m nyJ51PLzxzWucMdS1fLK144LtJrCspX8JG6TCqfmJuyv+EnJ1d3ztN81vrblKcj71y0+SF1aUtbO lNWaSvJ6pRTlJ/WVCxBbUK887fHPMw9ELnnLc5dHDRXNutR9qtHj/Pmjzk3i8a94sDONxJlqaD/Q ifEEd0lNnm+z0hsFg1MXL9PyjvuZF0Yyj7J4ypomsx6pRDgbKSNpEfL5kdgr9UZpCHbccstbpna9 c5uu/P2dgnFtoSm290G9p6bIHbzzAN156PJk5NFGVaZqKVvcv77SpubOnvkCqOcj1U6+/55rxunJ w5sb1vLumNo9l6/mE+PwpC65ENK04hfaIw9pPvFV0iLmC+f9S25/SZfkRkmkdWmpZTYscn7SDhTb OSTjel0/f7RQ4eiD3I2Uma2mI5PH7sqlPt9SM5yP/e18vKVryGDqyh3rnft4p7Adqbo8klddLFDN RT2xkHGxI/2sgrnMix2cw5YLjO7dc1fTlu/51jVNPlqpnPPslvY+u2U6//hAZ031gaOWL1RyU1oe 5Tx9JUU2/32kLsMPv/OPeq7kN7cgdUSK6HGxn3wrT3kKxMknXO3OpwzJxbfLTdvyVa70IMtNGJL+ 6NtEDx17vk9SmdFGOWcgUrYu/NP15o1a6twzL3+kE7dX7HZuW2r9tFpHqg3MBkKwZ/RwYva0m2kC 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 0Op/A560+JiMHwEA --------------Boundary-00=_ST4PJOLO04EOYIZ3INCD Content-Type: application/x-gzip; name="rules.cpp.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="rules.cpp.gz" H4sICHglPT0AA3J1bGVzLmNwcAB9Vttu2zgQfba+gnGBVKq9QW/pg+QYCLBFdgGjBdr0qRsUskTb dGxJEKkW2cD/vnOjbsk2DzF9Zjg8PHOhX5giOzS5VgtTWlfr9LgMXrTYT525su4jx7Tqf4Utptj2 kYOxbuDxNGp62Ja1cTsAg8bCflWkR22rNNPKujwJAvdQ6VxvFJ+/WJflYanW8C1pTXjOwhRuqYzV rsOBoLCaKzJbQDpzlZp6gTvmtG+p6uagR1ERYsMgMm1tQ9PmbZkeRpsRYgNtDoAD7KytDiXgOUfm EOcqT1069/7nvIjUY6DgD6krV97rwiYE8Pr7VELF0zt1pd4kLY7BWvxth1NURt8lahDqaknw+87Z WEIuOyQtcoI+MAvWQHlO/dtLPagV21ZqY1BeXP/awTLcancwhQ4zU8wViPAyeRlF5HVRNXb3Y51m 96GNEoHKipGIY6CYWdnA/yshd2HNvzqM1AxkIBddNEf1+Onz7V9/f7qZqy/fVh+/frydqz+vb69p cfP5evX1hDlxvAPFVHlzPD78oGKgHAjACUYv9IdTJTBjm7IOV3FsnK5TqFNlwIF4r/XWFEAakDOB dJEjMJsZzO7EbEKOeMWEIs58T4SOAFx+gi2gKmhRPAJrxWPG9hDD+nPLgVrhK4Obu4RNOAumUEvo DGIiup4Te8m4vUvEsAkNcnwdkZm0n83EaH8Zl+1CvtAkg8pTH2K1hrPvEw+8ib1ykolk5PC2dZAM jR3etQ4kVPJboUZ738deM1c3emy9jFk9tvUyIlQj7tQnRyHaPwqqP20OLlaw7umC0VgaPk6ixiSq FYuIfIY0/Xlc8RcbU1vXO5xSyTs0pHvobHVWFvnQW3n3U8eVqYjUMU2f0aaRK4keqz5XJM9J6DMF Ie2Q4MDnOYKi1ynwH6eAF9SW2jV1MWzzJDgFwc/S5Kqqy0xb+2So4iPBQ9UPUeqSbJcWW537ZPcG klgoHZ2XbyjscD9sh30u6g8anTHu9K63iF5Va9hk/liSVolHuTgBZnmksfBUMzxyD24Qoztwjwci IseBlpAbvPj3V/u7yNciedSQyHA/m3FJUG4eYRLtfbJ9BrAF0P9YuYcw4gr9Py7AfEwGoXbM7SNh 4Cm12k8mohPRMkgLO3KUoX5lEGOYnElXIVAHlFibOmM3Rudhl3n/tLbv6DN3wBSO02f7Q5pG9BmT N6CnlKMURr9AiW5XlzBLB1yef9qRklhGrKRrBswYGz0hMIydWizU9AbfqykufX0RHKtpQrfoNBJ1 fLlBitsgGxjt+T8FbiG5W0NROtUZW/XxKT6myFFuJG3Cn+woF+RPecHxu0Ee3YvujhVWVPcjac4e op28/agpSRqi/0xdRt0jjFFQu9eo14KnmkwMlovyaO66zv5NWdDZowQw1k+Ar4zBSBlMpTmPIW/B uhje6hT8B9MR7vl+CwAA --------------Boundary-00=_ST4PJOLO04EOYIZ3INCD-- ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners