Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: plangy 18 Ledna 2010, 22:17:54
-
Dobrý den, měl bych pár otázek ohledně programovacích jazyků. Trochu jsem si to zde pročetl a mnoho z vás při otázce "Jaký jazyk se mám naučit" odpovědělo C/C++ nebo C#. Chtěl jsem se zeptat proč. Není náhodou Céčko jazyk z dílny Microsoftu? Chtěl jsem se zeptat v čem je tak výjimečný. Dále mě zajímá, jak se jmenuje jazyk který je v Linuxu? Já vím, že vám ty otázky přijdou asi dost hloupé, ale chtěl bych si v tom udělat jasno a bohužel neznám nikoho, kdo by mi to osvětlil. Předem všem moc děkuji :)
-
Céčko opravdu není z dílen Microsoftu.
Jinak Linux (jako jádro) je z nějakých 90% (a spíš víc) právě v C (zbytek nějaké to C++, Assembler a spol.).
-
Něco o výše zmiňovaných jazycích nalezneš zde:
http://cs.wikipedia.org/wiki/C_(programovací_jazyk)
http://cs.wikipedia.org/wiki/C++
http://cs.wikipedia.org/wiki/C_Sharp
Ještě než se pustíš do učení, ať už čehokoliv, dobře si rozmysli, co vůbec se chceš učit a jaké zaměření si chceš vybrat. Všechny cesty vedou do Říma, ale...
-
Dobrý den, měl bych pár otázek ohledně programovacích jazyků. Trochu jsem si to zde pročetl a mnoho z vás při otázce "Jaký jazyk se mám naučit" odpovědělo C/C++ nebo C#. Chtěl jsem se zeptat proč. Není náhodou Céčko jazyk z dílny Microsoftu? Chtěl jsem se zeptat v čem je tak výjimečný. Dále mě zajímá, jak se jmenuje jazyk který je v Linuxu? Já vím, že vám ty otázky přijdou asi dost hloupé, ale chtěl bych si v tom udělat jasno a bohužel neznám nikoho, kdo by mi to osvětlil. Předem všem moc děkuji :)
Hehehe,
a) Když jsem byl na svém prvním kurzu C (cca 1985), tak tam nějaký Microsoft nikdo nezmiňoval. Že by mi tenkrát ti bolševici něco zatajili?
b) Úžasná formulace :-)))
Jinak na C je nejúžasnější to, že je to v zásadě velmi jednoduchý jazyk, který ti ovšem umožňuje vytvářet úžasně komplikované konstrukce...
-
Aha tak díky za objasnění. Nevim kde jsem to nabral, že C je od Microsoftu, ale dík za rady. :)
Teď jsem si přečetl první větu ze článku o C#
C# (vyslovované anglicky jako C Sharp, /siː ʃɑɹp/, doslova to označuje notu cis) je vysokoúrovňový objektově orientovaný programovací jazyk vyvinutý firmou Microsoft zároveň s platformou .NET Framework
Tak asi někde tady jsem asi nabral to, že celý c je od M$, i když to teda neni pravda. A když jsme u těch céček, tak které vy preferujete? C, C++ nebo C#? Je v tom hodně velký rozdíl?
-
Jasně, že C/C++. Nejraději jsem měl ty implementace od Borlandu. Na disketách. Ještě je mám někde možná schovaný :-)
No uznej:
/*
Get_MBR
*/
#include <alloc.h>
#include <bios.h>
#include <conio.h>
#include <dos.h>
#include <mem.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "st_def.h"
#include "st_dsk.h"
#include "st_win.h"
#define read 2
#define hdflag 0x80
#define sectorsize 512
char buffer [sectorsize], target [81];
int drive, head, track, sector;
FILE *file;
void main (int argc, char *argv[])
{
if (argc != 3)
{
cprintf ("use\r\nget_mbr {1|2} <target_file>\r\n");
exit (1);
}
strcpy (target, argv[2]);
drive = atoi (argv[1]) + hdflag - 1;
if ((drive < 0x80) || (drive > 0x81))
{
cprintf ("Illegal hard disk specification : %s\r\n", argv[1]);
exit (2);
}
file = fopen (target, "wb");
if (file == NULL)
{
cprintf ("Error open file %s\r\n", target);
exit (3);
}
head = 0;
track = 0;
sector = 1;
biosdisk (read, drive, head, track, sector, 1, buffer);
fwrite (buffer, sectorsize, 1, file);
fclose (file);
}
// FILEC32.CPP
//
// file's 32 bit CRC
//
// (c) 1995 Systems Technology Ltd.
#include <dos.h>
#include <io.h>
#include <stdio.h>
#include <sys\stat.h>
#include <time.h>
#include "stdef.h"
static const ulong crc32tab[] =
{
0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL,
0x076dc419L, 0x706af48fL, 0xe963a535L, 0x9e6495a3L,
0x0edb8832L, 0x79dcb8a4L, 0xe0d5e91eL, 0x97d2d988L,
0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, 0x90bf1d91L,
0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL,
0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L,
0x136c9856L, 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL,
0x14015c4fL, 0x63066cd9L, 0xfa0f3d63L, 0x8d080df5L,
0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, 0xa2677172L,
0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL,
0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L,
0x32d86ce3L, 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L,
0x26d930acL, 0x51de003aL, 0xc8d75180L, 0xbfd06116L,
0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, 0xb8bda50fL,
0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L,
0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL,
0x76dc4190L, 0x01db7106L, 0x98d220bcL, 0xefd5102aL,
0x71b18589L, 0x06b6b51fL, 0x9fbfe4a5L, 0xe8b8d433L,
0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, 0xe10e9818L,
0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L,
0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL,
0x6c0695edL, 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L,
0x65b0d9c6L, 0x12b7e950L, 0x8bbeb8eaL, 0xfcb9887cL,
0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, 0xfbd44c65L,
0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L,
0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL,
0x4369e96aL, 0x346ed9fcL, 0xad678846L, 0xda60b8d0L,
0x44042d73L, 0x33031de5L, 0xaa0a4c5fL, 0xdd0d7cc9L,
0x5005713cL, 0x270241aaL, 0xbe0b1010L, 0xc90c2086L,
0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL,
0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L,
0x59b33d17L, 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL,
0xedb88320L, 0x9abfb3b6L, 0x03b6e20cL, 0x74b1d29aL,
0xead54739L, 0x9dd277afL, 0x04db2615L, 0x73dc1683L,
0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L,
0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L,
0xf00f9344L, 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL,
0xf762575dL, 0x806567cbL, 0x196c3671L, 0x6e6b06e7L,
0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, 0x67dd4accL,
0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L,
0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L,
0xd1bb67f1L, 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL,
0xd80d2bdaL, 0xaf0a1b4cL, 0x36034af6L, 0x41047a60L,
0xdf60efc3L, 0xa867df55L, 0x316e8eefL, 0x4669be79L,
0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L,
0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL,
0xc5ba3bbeL, 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L,
0xc2d7ffa7L, 0xb5d0cf31L, 0x2cd99e8bL, 0x5bdeae1dL,
0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, 0x026d930aL,
0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L,
0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L,
0x92d28e9bL, 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L,
0x86d3d2d4L, 0xf1d4e242L, 0x68ddb3f8L, 0x1fda836eL,
0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, 0x18b74777L,
0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL,
0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L,
0xa00ae278L, 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L,
0xa7672661L, 0xd06016f7L, 0x4969474dL, 0x3e6e77dbL,
0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, 0x37d83bf0L,
0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L,
0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L,
0xbad03605L, 0xcdd70693L, 0x54de5729L, 0x23d967bfL,
0xb3667a2eL, 0xc4614ab8L, 0x5d681b02L, 0x2a6f2b94L,
0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, 0x2d02ef8dL
};
static ulong updc32 (uchar c, ulong crc)
{ return crc32tab[(uchar)(crc ^ (ulong)(c))] ^ ((crc >> 8) & 0x00FFFFFFL); }
static unsigned long c32 (char *path)
{
uchar *p, b[1024];
ulong s,
crc;
ushort n, r;
FILE *f;
f = fopen (path, "rb");
crc = 0xFFFFFFFFL;
if (!f)
return crc;
fseek (f, 0, SEEK_END);
s = ftell (f);
fseek (f, 0, SEEK_SET);
while (s)
{
if (s > 1024)
r = 1024;
else
r = s;
s -= r;
n = fread (b, 1, r, f);
if (!n || (n != r))
break;
p = b;
while (n--)
crc = updc32 (*p++, crc);
}
fclose (f);
return crc;
}
static char* fst (char *path)
{
char s[80];
struct stat st;
struct tm *stm;
stat (path, &st);
stm = localtime (&st.st_ctime);
strftime (s, 80, "%Y.%m.%d %H:%M:%S", stm);
return s;
}
short main (int argc, char *argv[])
{
if (argc > 0)
printf ("%s %s %08lx ", argv[1], fst (argv[1]), c32 (argv[1]));
return 0;
}
Není to krása? :-)
-
Lahoda pro oko 8)
-
Nic není tak sexy jako C/C++ zdroják ;D
-
Nic není tak sexy jako C/C++ zdroják ;D
Ještě snad tak Fender Stratocaster :-)
-
Nic není tak sexy jako C/C++ zdroják ;D
Ještě snad tak Fender Stratocaster :-)
Já čekal nějakou kočku a ona je to kytara >:(
-
Nic není tak sexy jako C/C++ zdroják ;D
Ještě snad tak Fender Stratocaster :-)
Já čekal nějakou kočku a ona je to kytara >:(
Škoda každého dne, kdy se nedozvíš něco nového :-)
-
Škoda každého dne, kdy nezhřešíš... 8)
-
Škoda každého dne, kdy nezhřešíš... 8)
Dobrý, dobrý, hele, nechtěl ten kluk něco ohledně Céčka? :-)
-
Původně jo, ale tohle je taky zajímavé. Ikdyž stratocaster není můj vkus. Radši Spector Euro 5 :P
Pokud máte se mnou ještě trpělivost, tak by mě zajímalo ještě toto:
Když si napíšu skriptík v bashi, jde to nějak převést, aby to běželo i ve windows? Mám na mysli pouze triviální záležistosti. Konkrétně toto:
Napsal jsem si jednoduchý skriptík na stažení učebnice. Na webu je uložená v pdf, ale tak, že co stránka, to jedno pdfko. Tak jsem to vyřešil takhle:
#!/bin/bash
#
# Použítí:
# mujskriptik.sh [název učebnice] [link na učebnici]
# Přesunutí a vytvoření cílového adresáře
cd /home/plangy/Dokumenty/vscht/Ucebnice
mkdir $1
cd $1
# Stažení souborů pdf
for i in 00{1..9};
do wget $2$i.pdf;
done
for i in 0{10..99};
do wget $2$i.pdf;
done
for i in {100..999};
do wget $2$i.pdf;
done
# Vytvoření jednoho pdf souboru, přesunutí do adresáře Učebnice
pdftk *.pdf output $1.pdf
cp $1.pdf /home/plangy/Dokumenty/vscht/Ucebnice
cd ..
# Smazaní samostatných pdf
rm -r $1/
# Ujištění, že to nějak dopadlo
if [ -e $1.pdf ]
then echo 'Soubor' $1 'byl úspěšně vytvořen'
else echo 'Někde se stala chybka'
fi
exit
Tak by mě zajímalo, jestli to jde přepsat i do nějakého "multiplatformního" tvaru.
-
No jasně, nahraješ script na Widle, přidáš mu příponu .bat a spustíš ho. Fungovat to asi nebude, ale to není na Widlích nic neobvyklého.
-
Když si napíšu skriptík v bashi, jde to nějak převést, aby to běželo i ve windows? Mám na mysli pouze triviální záležistosti. Konkrétně toto:
Napsal jsem si jednoduchý skriptík na stažení učebnice. Na webu je uložená v pdf, ale tak, že co stránka, to jedno pdfko. Tak jsem to vyřešil takhle:
#!/bin/bash
#
# Použítí:
# mujskriptik.sh [název učebnice] [link na učebnici]
# Přesunutí a vytvoření cílového adresáře
cd /home/plangy/Dokumenty/vscht/Ucebnice
mkdir $1
cd $1
# Stažení souborů pdf
for i in 00{1..9};
do wget $2$i.pdf;
done
for i in 0{10..99};
do wget $2$i.pdf;
done
for i in {100..999};
do wget $2$i.pdf;
done
# Vytvoření jednoho pdf souboru, přesunutí do adresáře Učebnice
pdftk *.pdf output $1.pdf
cp $1.pdf /home/plangy/Dokumenty/vscht/Ucebnice
cd ..
# Smazaní samostatných pdf
rm -r $1/
# Ujištění, že to nějak dopadlo
if [ -e $1.pdf ]
then echo 'Soubor' $1 'byl úspěšně vytvořen'
else echo 'Někde se stala chybka'
fi
exit
Tak by mě zajímalo, jestli to jde přepsat i do nějakého "multiplatformního" tvaru.
pokud do Widlí nějak dotáhneš bash a ostatní základní Unixový nástroje, tak by to mělo jít (viz http://cs.wikipedia.org/wiki/Cygwin (http://cs.wikipedia.org/wiki/Cygwin))
jinak Eric S. Raymond doporučuje na učení se programovat Python (http://en.wikipedia.org/wiki/Python_%28programming_language%29), který multiplatforní je (http://www.catb.org/~esr/faqs/hacker-howto.html#skills1 (http://www.catb.org/~esr/faqs/hacker-howto.html#skills1))
edit:
cd /home/plangy/Dokumenty/vscht/Ucebnice
kolega chemik?
-
njn. FCHI, PINIM, 252 :)
-
Já bych to viděl na nějakou učebnici o C/C++. Jinak C++ je vlastně další verze jazyka C a není problém (nebo jsem na něj zatím nenarazil) použít překladač C++ na jazyk C. Podle knížky všechno dopodrobna pochopíš a po určité době budeš na věci vidět trochu víc "shora".
Já sám toho myslím moc neumím, ale teďka chodím na seminář z IVT a tam nás učitel učí programovat zároveň v C, Delphi a Pascalu a už po asi deseti hodinách nás učil dělat GUI a pracovat se soubory, ačkoli ještě nevystvětlil pole... Ti, co neměli v ruce žádnou takovou knížku jsou doslova ztracení a takhle narychlo je to pak vážně chaos.
Knížka je nejlepší krok. ;)
-
C++ má tu výhodu oproti čistému C, že můžeš (libovolně) kombinovat objektový a strukturovaný přístup podle toho, co je zrovna rychlejší/elegantnější...
Nehledě na to, že v takto ,,profláklém" jazyce existuje spousta už hotových fičur ala CTRL+C & CTRL+V ;)
-
Všem děkuji za cenné rady :)
-
Doporučuji http://knihy.cpress.cz/knihy/cely-knizni-web/sleva-26-35/mistrovstvi-v-c-3-aktualizovane-vydani/
Dokonce to teď mají v akci ;)
-
....na seminář z IVT a tam nás učitel učí programovat zároveň v C, Delphi a Pascalu a už po asi deseti hodinách nás učil dělat GUI a pracovat se soubory, ačkoli ještě nevystvětlil pole...
Člověče, tohle bude sice OT, ale dejte mi kontakt na toho pedagoga a já na něj pošlu partu zfetovanejch negrů z kleštěma a letlampou... V práci se dost často setkávám s různými výplody různých programátorů, kteří ani nejou schopni popsat jak systém funguje a už vím, oni je to teď učí na školách. Chcete tedy říci, že před tím, než se naučíte a kompletně si osvojíte konstrukce typu IF-THEN-ELSE, REPEAT-UNTIL, WHILE-DO, než zjistíte k čemu jsou dobrá pole, jak se deklarují,... tak se nejprve učíte kreslit GUI??? Ufff, tak už rozumím tomu, o čem začíná být dnešní programování, to je jako autotuning, místo aby si tuner nejprve vyladil motor, tak auto obtěžká metrákem plastů... Je mi smutno, Učí Vás aspoň namalovat si vývoják? Programovat v assembleru, abyste věděli, jak fungují symbolické odkazy? Základní programovací logiku, na to byl mimochodem skvělý Karel nebo Logo, pamětníci potvrdí... Nebo prostě začínáte od malování okýnek? Držím palce.
-
Hehe, časy se měněj... 8)
-
Hehe, časy se měněj... 8)
Takže na hodinách programování už se neučí programovat, ale malovat?
-
Člověče, tohle bude sice OT, ale dejte mi kontakt na toho pedagoga a já na něj pošlu partu zfetovanejch negrů z kleštěma a letlampou...
Učí Vás aspoň ... Programovat v assembleru...
Tos nemoh říct hned, negře, že nám sem posíláš Wolfa?
BTW V jakým assembleru? Mě se teda mnohem víc než ten x86 líbil IBM 360. Takový BALR 14,15, to si budu pamatovat do smrti. Kam se na to nějaká retn nebo iret hrabe :-)
-
BTW V jakým assembleru? Mě se teda mnohem víc než ten....
Omlouvám se, ale slovo assembler používám jako obecné synonymum pro nižší programovací jazyky, orintace alespoň v některém z nich totiž dá solidní základ pro pozdější programování v čemkoli a naučí člověka programovat tak, aby to fungovalo, tedy včetně zlozvyků jako psát kódy co nejúsporněji a nepřehledně :)
-
Ano, souhlasím.
V tom případě mám ale stejně ze všech Assemblerů nejraději Jazyk symbolických adres JSEP, jak se tomu tenkrát s bolševickou přímočarostí říkávalo :-)