Olio-ohjelmoinnin ongelmat
C#-kielen ongelmat
Sanko F# -tapahtuman diasarja
Copy: https://docs.google.com/presentation/d/1oJm-PRWkCy4qbUOunD2xE-hCZ2gARvN9ASIouuEe02k/edit?usp=sharing
This document discusses tools and strategies for language learning. It begins by explaining motivations for learning a new language such as reducing work time and recycling or reusing others' ideas. It then presents several tools that can be used for language learning, including Web 2.0 technologies, comic creation software, and portable smart devices. Finally, it outlines actions like consolidating learning on the go and using cloud sharing to continue learning across multiple devices. The document promotes an active and technology-enabled approach to language acquisition.
F# User Group presentation
Many current topics briefly.
More descriptions in the notes-tab.
Copy: https://docs.google.com/presentation/d/1s49ArmNmEy_vcjgQOUM2CWWz6bl-lZ4rHZVkQJe4bm0/edit?usp=sharing
Same presentation in Finnish:
http://www.slideshare.net/thorium/message-passing-nosql
Pari sekalaista diaa, mm. linkit ja lisätiedot
Sanko F# -tapahtuman diasarja
Copy: https://docs.google.com/presentation/d/1-gCifUy5QOkcu6ByEPfZOJ9UcnAlmJclKIzL9lMlmLo/edit?usp=sharing
20111030 Perth SharePoint User Group - Building an Enterprise Mash-Up PlatformGarry Stewart
The document discusses building an enterprise mash-up platform using SharePoint. It describes mash-ups as combining multiple applications or data sources into a single composite application. The platform would provide governance and standardization to make integrating applications easier and allow for economies of scale. Examples of employee and resource portals are provided. The platform must have consistency, manage risks, define reusable components, and follow architectural principles and governance processes to improve usability and support continual improvement.
Microsoft Integration Roadshow: Integration in ActionGarry Stewart
The document describes a technical demo that will showcase an integrated enterprise architecture using disparate data sources to power business processes. The demo will integrate plant telemetry data, production data, asset information, and product information from various on-premise and cloud systems using technologies like Azure, BizTalk, SQL Server StreamInsight, and WCF services. It also provides additional resources on these technologies.
Ohjelmointikielet ja -paradigmat - kalvot 2014Jouni Smed
Kurssilla tarkastellaan ohjelmointikieliä ja paradigmoja teoreettiselta, tekniseltä ja historialliselta kannalta. Aihetta konkretisoidaan tutustumalla eri ohjelmointiparadigmoja edustaviin ohjelmointikieliin. Kurssi luo kokonaiskuvan ohjelmointikielten kehitykseen, minkä jälkeen tarkastellaan lähemmin eri ohjelmointiparadigmoja. Imperatiivisen ohjelmoinnin osalta luodaan kokonaiskuva ohjelmarakenteisiin ja olio-ohjelmoinnin osalta syvennetään ymmärrystä periytymismekanismin ja geneerisyyden toiminnasta. Deklaratiivinen ohjelmoinnin osalta keskitytään erityisesti funktionaaliseen ohjelmointiin ja sen teoreettiseen taustaan (mm. lambda-kalkyyliin) sekä logiikkaohjelmointiin.
Koodiaapinen on suomalaisille peruskoulun opettajille suunnattu ohjelmoinnin opettamiseen valmistava MOOC (massiivinen avoin verkkokurssi). Syksyn 2015 kurssitoteutuksen tuloksia on tiivistetty tähän esitykseen.
This document discusses functional programming concepts in F#, including function theory, type inference, function composition, monads, and combinators. It provides examples of defining and inferring types for various functions in F#, and explains concepts like partial function application, function composition using the >> operator, and common combinators like S, K, and I. It also briefly introduces monads and compares them to constructs like the list and nullable types in other languages.
This document discusses tools and strategies for language learning. It begins by explaining motivations for learning a new language such as reducing work time and recycling or reusing others' ideas. It then presents several tools that can be used for language learning, including Web 2.0 technologies, comic creation software, and portable smart devices. Finally, it outlines actions like consolidating learning on the go and using cloud sharing to continue learning across multiple devices. The document promotes an active and technology-enabled approach to language acquisition.
F# User Group presentation
Many current topics briefly.
More descriptions in the notes-tab.
Copy: https://docs.google.com/presentation/d/1s49ArmNmEy_vcjgQOUM2CWWz6bl-lZ4rHZVkQJe4bm0/edit?usp=sharing
Same presentation in Finnish:
http://www.slideshare.net/thorium/message-passing-nosql
Pari sekalaista diaa, mm. linkit ja lisätiedot
Sanko F# -tapahtuman diasarja
Copy: https://docs.google.com/presentation/d/1-gCifUy5QOkcu6ByEPfZOJ9UcnAlmJclKIzL9lMlmLo/edit?usp=sharing
20111030 Perth SharePoint User Group - Building an Enterprise Mash-Up PlatformGarry Stewart
The document discusses building an enterprise mash-up platform using SharePoint. It describes mash-ups as combining multiple applications or data sources into a single composite application. The platform would provide governance and standardization to make integrating applications easier and allow for economies of scale. Examples of employee and resource portals are provided. The platform must have consistency, manage risks, define reusable components, and follow architectural principles and governance processes to improve usability and support continual improvement.
Microsoft Integration Roadshow: Integration in ActionGarry Stewart
The document describes a technical demo that will showcase an integrated enterprise architecture using disparate data sources to power business processes. The demo will integrate plant telemetry data, production data, asset information, and product information from various on-premise and cloud systems using technologies like Azure, BizTalk, SQL Server StreamInsight, and WCF services. It also provides additional resources on these technologies.
Ohjelmointikielet ja -paradigmat - kalvot 2014Jouni Smed
Kurssilla tarkastellaan ohjelmointikieliä ja paradigmoja teoreettiselta, tekniseltä ja historialliselta kannalta. Aihetta konkretisoidaan tutustumalla eri ohjelmointiparadigmoja edustaviin ohjelmointikieliin. Kurssi luo kokonaiskuvan ohjelmointikielten kehitykseen, minkä jälkeen tarkastellaan lähemmin eri ohjelmointiparadigmoja. Imperatiivisen ohjelmoinnin osalta luodaan kokonaiskuva ohjelmarakenteisiin ja olio-ohjelmoinnin osalta syvennetään ymmärrystä periytymismekanismin ja geneerisyyden toiminnasta. Deklaratiivinen ohjelmoinnin osalta keskitytään erityisesti funktionaaliseen ohjelmointiin ja sen teoreettiseen taustaan (mm. lambda-kalkyyliin) sekä logiikkaohjelmointiin.
Koodiaapinen on suomalaisille peruskoulun opettajille suunnattu ohjelmoinnin opettamiseen valmistava MOOC (massiivinen avoin verkkokurssi). Syksyn 2015 kurssitoteutuksen tuloksia on tiivistetty tähän esitykseen.
This document discusses functional programming concepts in F#, including function theory, type inference, function composition, monads, and combinators. It provides examples of defining and inferring types for various functions in F#, and explains concepts like partial function application, function composition using the >> operator, and common combinators like S, K, and I. It also briefly introduces monads and compares them to constructs like the list and nullable types in other languages.
Jokaisessa kerroksessa on rajapinta (Interface) ja sen toteuttava luokka Luokkaa ei löydä helposti, se saattaa tulla IoC:lla Kerrosten rajapinnat eivät saa muuttua Usein kerrokset ovat “turhia” pass-through-kerroksia Ehkä sisältävät null-checkit (ja olio-mappauksen kerroksen olioista toisiin) OMG Ponies: http://msmvps.com/blogs/jon_skeet/archive/2009/11/02/omg-ponies-aka-humanity-epic-fail.aspx
Ylläpitovaiheessa koodin muuttaminen on kalliimpaa kuin kehitysvaiheessa On kaksi syytä muuttaa koodia ylläpitovaiheessa: Business-tarve muuttuu, Domain-olion rooli muuttuuBugi: Koodissa näyttäisi lukevan eri tavalla kuin ohjelma toimii Kummassakin tapauksessa ollaan ongelmissa
Olioita on alun perin perusteltu ihmisille luonnollisena mallina. Suunniteltava bottom-up, vaikka määrittelyt tehdään kuitenkin ensin korkeammalla tasolla ennen yksityiskohtia.
Tässä container… Sitten tarvitaanmanager,provider, factory, …Ja interfacet tietysti…Mitä tämä oikeastaan tekee?
Yleiskäyttöisyys ei ikinä onnistu, koska kaikkea tulevaa toiminnallisuutta ei alussa koskaan tiedetä Ainoa toimiva yleiskäyttöisyys on Reflection Menetetään kääntäjän virheentarkistukset Tyyppijärjestelmä ei ole .NET:ssa sattumalta!
- Kuinka vaikeaa se voi olla???Noise! Perus property { get;set; } on helppo, mutta olioista on vaikeaa tehdä sellaisia, ettei joku muu voisi käyttää set:iä saamaan olion väärään tilaan.
Kuvan alareunan funktio on oikeasti toimiva… :-)
Uudempi kieli ja lyhyemmät käskyt ja paremmat kirjastot eivät ole itse asiassa edes pääpointti.F#:lla on korkeampi abstraktiotaso kuin C#:lla. Kuten C-kiellellä on korkeampi abstraktiotaso kuin assembler-kielellä.
Javalla ei tietenkään voi tehdä mitään tämän suuntaistakaan:Javan generics on vain “syntacticsugar”, eli kääntäjä optimoi sen pois
- Tämä olisi ok, jos kieli muutenkin erittelisi sivuvaikutukset, mutta myös Func voi suorittaa sivuvaikutuksen. Tästä syystä:F#-funktiot eivät ole yhteensopivia C# kanssa, Aito patternmatching ei toimi F# listakäsittely on ilmaisuvoimaisempaa kuin LINQ. Lisäksi listojen jako useisiin IEnumerableihin on hankalaa (lähinnä vain GroupBy-kikka).