poniedziałek, 13 maja 2013

Sesja...

A wraz z nią nauka C i wątków pod Linuksa na przykładach ze średniowiecza
Z wykładów ciężko o konkrety, więc trzeba było pogoglować:
https://computing.llnl.gov/tutorials/pthreads/
To tak offtopem od C#

Czy tylko u mnie na uczelni większość profesorów zatrzymało się w czasie znając tylko 1 język, a o innych definicję z wiki? :)

sobota, 11 maja 2013

C# a Linux

Programiści pracujący na Linuxie zapewne wiedzą, że jest możliwość pisania programów w C#, lecz jeżeli ktoś będzie mieć zamiar kiedyś się pobawić linuksem bez pozbawiania się możliwości programowania w swoim ulubionym języku, to mogę polecić dwa IDE:

  1. Qt creator
  2. Monodevelop
  3. Codeblocks

Nie mam zbytniej ochoty na opisywanie wszystkiego w ilości większej, niż jedno / dwa zdania.

Qt creator - miły design, dobry debugger, Ci co programują w nim więcej mogli by powiedzieć ode mnie, bo ja korzystałem z

Monodevelop - można śmiało nazwać go portem Visual Studio, oczywiście nie jest tak obszerny, ale widząc go pierwszy raz na pewno nie będziemy się zbyt martwić o chaos. Polecam dla tych, którzy spędzili trochę czasu w VS

Codeblocks - typowe, mało ważące IDE. Chyba najlepsze w kwestii rozmiar / jakość

Nie orientowałem się w kwestii C# na Qt & CB, ale MD na 100% obsługuje C#

Monodevelop
  • Multi-platform
    Supports Linux, Windows and Mac OS X.
  • Advanced Text Editing
    Code completion support for C# 4, code templates, code folding.
  • Configurable workbench
    Fully customizable window layouts, user defined key bindings, external tools
  • Multiple language support
    C#, Visual Basic.Net, C/C++, Vala
  • Integrated Debugger
    For debugging Mono and native applications
  • GTK# Visual Designer
    Easily build GTK# applications
  • ASP.NET
    Create web projects with full code completion support and test on XSP, the Mono web server.
  • Other tools
    Source control, makefile integration, unit testing, packaging and deployment, localization

Tak wiem, brzmi jak bym faworyzował to IDE, ale po prostu jest dość przyjazne, i wspiera C# na systemie Linux

To tyle

niedziela, 5 maja 2013

Programowanie nie takie straszne...

Osoby zaczynające swą przygodę z programowaniem często dość szybko zostają zdemotywowani.
Kilka powodów, które uważam za istotne (z całym szacunkiem dla czytelników):

  • Grozi mi pała z przedmiotu, muszę się pouczyć bo nie dostanę na szlugi :\
  • Napisałem super elo mega Hello World, w takim tempie już jutro będę pisał Fifę 2141240!!!
  • Klasy, zmienne, stringi łingi, nie widzę nic konkretnego... na tym napiszę najwyżej kalkulator a i tak ten z windowsa lepszy...
  • Konsola konsola konsola, całe życie z tą durną konsolą?
  • Nie chce mi się...
  • Nie ogarniam...

Itp. itd.

 Niech to będzie motywujący wpis dla tych, którzy mają chęć rzucić programowanie w kąt

Zobaczmy, jak można napisać coś bardzo użytecznego, i jednocześnie prostego
ps. duża ilość kodu nie oznacza, że jest on skomplikowany

Klient FTP:
http://www.codeproject.com/Tips/443588/Simple-Csharp-FTP-Class

Przeglądarka WWW napisana w max 7 minut:


Odtwarzacz muzyki napisany w 5 minut


Konwerter muzyczny MP3 -> WAV ~~ 6 minut

Czemu to wszystko trwa tak krótko, i czemu (mam nadzieję) nie wydaje się koszmarem nocnym?
Ponieważ C# zawiera masę bibliotek, oraz (w porównaniu do przykładowo C++, chociaż to specyficzne porównanie, i proszące się czasami o hejt) jest dużo prostszym językiem.

Oczywiście są to aplikacje napisane w podstawowych wersjach, jeżeli będziecie uparci, to stworzycie coś ponad to. Nie ma osób specjalizujących się w każdej z tych dziedzin, dla jednej obsługa protokołów sieciowych będzie trywialne, dla innych magią (tak samo z plikami muzycznymi etc.)

Jak ktoś jest od wszystkiego, to jest do niczego

Dla tego polecam wgłębianie się w kierunku, który sobie wybierzecie, i w którym będziecie czuć się coraz pewniej. Na wszystko jest recepta, wystarczy cierpliwość, wujek google, i przede wszystkim dobry pomysł a czas zrobi swoje

Ikony obiektów

Pisząc program w C# (dokładniej będzie tu mowa o wyglądzie Visual Studio) często korzystacie z sugestii jakie oferuje wam intellisense czyli po prostu podpowiadanie użytkownikowi, jakie metody etc. może wywołac z danego obiektu.

Niektórzy pewnie wiedzą co oznaczają załączone ikony w sugestiach, anyway:


Oczywiście to nie są jedyne ikony, jakie występują w Visual Studio, lecz jedne z najważniejszych. Po więcej odsyłam do:

Class View and Object Browser Icons

 Szczególnie do Signal Icons

 

Klasy

Ostatnio zostały opisane struktury, więc teraz pora na klasy
Zobaczmy przykładowy kod Zostały utworzone dwa obiekty:

- Struktura kwadrat

- Klasa kwadrat

One w działaniu nie różnią się niemal niczym, oprócz tzw. "konstruktora" (ang. constructor)

Różnica jest trywialna - niektóre zmienne można podawać już na etapie tworzenia obiektu
Niektórzy mogą pomyśleć, czy to jest takie użyteczne. Odpowiedź jest bardzo prosta - tak, z kilku powodów:

- Przeglądając w sieci dokumentacje niektórych funkcji (tu kłania się strona MSDN, postaram się zrobić o tym jakiś wpis) dowiecie się, że klasy są niemal wszędzie
- Oszczędność linijek w kodzie, można zyskać na estetyce kodu (chociaż są wyjątki)
- Jeżeli czytacie to dla siebie z chęci programowania, a nie z obowiązku zaliczenia semestru, to sami się z biegiem czasu przekonacie czemu konstruktor jest użyteczny

Klasa w porównaniu do struktury wyróżnia się owymi najważniejszymi faktami
Struct Class
Dziedziczenie NIE TAK
Konstruktor NIE TAK
*Kwantyfikatory dostępu TAK TAK
*NULL reference NIE TAK
Interfejsy TAK TAK
Kopiowanie klas i struktur
Może najprościej zamieszczę kod i rezulat

W skrócie: w przeciwieństwie do struktur, zmiana wartości jednej z kopiowanej klasy ma wpływ na jej pozostałe kopie
Dziedziczenie klas:
Dziedziczenie klas, to najprościej ujmując ich nakładanie się.
Kod przykładowy: