Názory ke článku Code Contracts - Úvod
21. 2. 2011
Co se stane, kdyz budu mit zdrojovy kod s metodami Contracts.*, ale ja je u sebe nebudu mit nainstalovane?
21. 2. 2011
Je sice chvályhodná snaha všechno připsat Microsoftu, ale Microsoft zde jen zkopíroval už mnoho let existující.
Design by contract je vynález programovacího jazyka Eifell a vzniknul v roce 1985. Autorem code contracts je tedy Bertrand Meyer.
To, že MS code contracts zkopíroval po 25 letech od jejího zveřejnění neznamená, že je jejím autorem.
A stejně takje tomu podobně s většinou technik „od MS“.
Miloslav Ponkrác
Reagoval na komentář od uživatele Miloslav Ponkrác :
Pokud dobře vidím, v článku se píše, že v Microsoft Research vznikla technologie Code Contracts. Štěpán nikde netvrdí, že MS vynalezl celý přístup postavený na kontraktech (vámi jmenovaný design by contracts).
A netvrdí to ani samotný Microsoft: "Code Contracts bring the advantages of design-by-contract programming to all .NET programming languages."
Takže pro vyjasnění - design by contracts je přístup k vývoji softwaru, s kterým přišel pan Meyer; Code Contracts je produkt vyvinutý v Microsoftu, který jej přináší do .NETu.
21. 2. 2011
Reagoval na komentář od uživatele Martin Šimeček :
Ale tato technologie nevznikla v Microsoft Research. Chcete-li dále překrucovat pravdu, prosím.
Dále bych chtěl upozornit, že reaguji na článek, ne na prohlášení Microsoftu. Moje reakce byla na autora, nikoli na texty psané Microsoftem, tudíž je irelevantní mi jimi argumentovat.
To, že MS implementoval technologii, nebo adoptovat – jak se děje třeba v případě TCP/IP, nebo zrovna Code Contracts – neznamená, že „vznikla technologie“. A nebo autor vyvíjí zcela novou technologii českého jazyka, kde slova mají význam podle Bulharska.
Sám Microsoft uvádí, že je to implementace design-by-contract z roku 1989 jen s jiným názvem. (Název desing-by-contract má ochrannou známku).
Napřímo: Autor to uvádí špatně, v Microsoftu žádná technologie Code Contracts nevznikla, Microsoft pouze implementoval již, před 25 lety vzniklo tehcnologii, do svého frameworku.
Reagoval na komentář od uživatele Miloslav Ponkrác :
Citací z MS Research jsem se vám snažil přiblížit pohled Microsoftu na design by contract a účel to splnilo - všiml jste si, že se jedná o implementaci. Stejně tak tuto metodu implementuje třeba jContractor, PyDBC a další (na Wikipedii je přehršel řešení pro další jazyky, což jistě víte).
Podstatné je, že technologie Microsoftu, která realizuje design by contract, se jmenuje Code Contracts (stejně jako implementace pro Javu se jmenuje jContractor a pro Python PyDBC) a jejím autorem je opravdu Microsoft Research.
Chápu vás - mícháte metodu přístupu k vývoji softwaru s jejím konkrétním přenesením do praxe v produktu konkrétní firmy a implementace pro vás znamená kopírování. S tím nemám problém - myslete si na základě tohoto předpokladu, co chcete; článek ale hovoří o Code Contracts v .NET a tím pádem v něm chyba není.
23. 2. 2011
Reagoval na komentář od uživatele lokomotiva :
V .NET verze 4 je samotná třída Contracts je umístěná v sestavě (assembly) mscorlib.dll, takže pro použití např. Contracts.Requires dokonce není třeba ani explicitně referencovat nějakou jinou sestavu a všechno bude fungovat.
Ovšem bez dalších nástrojů, které jsou součástí Code Contracts, není možné provádět statickou analýzu a kontrola kontraktů za běhu funguje pouze omezeně (více o tom bude v dalších dílech).
Reagoval na komentář od uživatele Miloslav Ponkrác :
Pane Ponkráci,
dovolím si reagovat na váš komentář, i když trochu se zpožděním.
> Je sice chvályhodná snaha všechno připsat Microsoftu.
Připsat všechno Microsoftu není chválihodná snaha, stejně jako Microsoft bez argumentů odsuzovat nebo dogmaticky adorovat Linux/BSD/Javu/Php/C#/Gimp/(doplňte, co chcete). Netvrdím, že něco z toho děláte, chci tím říct, že bezduché pochlebování libovolné firmě/značce/atd. není správné. Pokud někdo prohlašuje, že s danou technologií nechce mít nic společného, protože je (nebo není) od firmy XY, aniž by měl jiný faktický argument, není to profesionál.
> Design by contract je vynález programovacího jazyka Eifell a vzniknul v roce 1985. Autorem code contracts je tedy Bertrand Meyer.
Ano, děkuji za doplnění.
> To, že MS code contracts zkopíroval po 25 letech od jejího zveřejnění neznamená, že je jejím autorem.
Zde není zřejmé, co myslíte pojmem "zkopíroval". Patrně tím myslíte, že "zkopíroval" myšlenku, která stojí za DBC, s čímž mohu souhlasit a děkuji za další doplnění článku. Podle zakončení uvedené věty soudím, že se domníváte, že je snad někde v článku uvedeno, že Microsoft je autorem myšlenek, které stojí za DBC. Mohu vás ujistit, že tomu tak není, klidně si článek znovu přečtěte.
Na "kopírování" myšlenek a jejich dalšího vylepšování stojí technický pokrok naší civilizace. Pokud jste neměl to štěstí s panem Bertrandem Meyerem vyvíjet Eiffel, dozvěděl jste se o jeho existenci pravděpodobně z nějakého článku (a pak jste tu informaci "zkopíroval" sem). Stejně tak si Linus Torvalds přečetl knihu Operating Systems: Design and Implementation od Andyho Tanenbauma a "zkopíroval" operační systém Minix. Autoři MySQL "zkopírovali" B-stromy od pana Rudolfa Bayera. Code Contracts jsou zatím v porovnání s Eiffelem spíš hračkou, ale třeba díky nim se dočkáme masovějšímu rozšíření principů okolo DBC a ve finále i nějakých jejich zásadních vylepšení a čistě pro vaší informaci: je mi úplně jedno, jestli za tím bude stát Microsoft, Oracle nebo nadšený student z Finska.
8. 5. 2011
Miloslav Ponkrác píše:
MS code contracts zkopíroval po 25 letech od jejího zveřejnění neznamená, že je jejím autorem.
Pán astrológ, aký praktický význam má táto informácia pre programátorov?