Dlaczego C taki popularny?

0

W rankingach (np http://www.tiobe.com/tpci.htm) zajmuje druge miejsce. Powiedzcie mi czemu jeżeli istnieją obiektowe języki, które nie ustępują wydajności C (np. C++) dalej klepie się w czymś nieobiektowym? Czy to może ta popularność bierze się z możliwości programowania mikrokontrolerów i sprzętu ?

0

Nie brał bym tego rankingu całkiem serio. Budowany jest on na podstawie zapytań w wyszukiwarkach, więc metodologia na pewno nie jest doskonała.

Java jest bardzo popularna jako "coś w komórce dzięki czemu można pograć w gierki". Poza tym jest to wyspa :) Więc na pewno dużo zapytań jest kierowanych z tego powodu.

Podobnie jest z językiem Basic - "Basic" to całkiem ważne i często używane angielskie słowo.

A C? Wątpie żeby ktoś szukał informacji na temat trzeciej literki alfabetu, ale możliwe, że dużo uczniów czy studentów nabija mu statystyki bo szukają pomocy do szkoły/na uczelnię.

0

Czy to może ta popularność bierze się z możliwości programowania mikrokontrolerów i sprzętu ?

Mniej więcej o to chodzi. Przy czym część tych urządzeń ma już swoje lata i kompilatory są dość "ciekawe". Wprowadzenie nowego rozwiązania jest za drogie więc pisze się w poczciwym C.

ps. Java na pierwszym miejscu :D

0

W sumie właśnie z tego powodu, z C++ ludzie przechodzą na Jave (stąd ma pierwsze miejsce) a C jest prostym językiem, zarówno do nauki jak implementacji. Poza tym dawno nie widziałem biblioteki w C pisanej nieobiektowo.

0

A Python to pewnie jest popularny bo ludzie szukają dużo na temat pytonów [rotfl] .Te rankingi są tworzone na podstawie ofert pracy a nie co kto wpisze w wyszukiwarke. Podobnie jak polska 'komercha'

0

Sprobujcie w JAVIE albo Pythonie zaprogramowac jakis AVR albo inny mikrokontroler :P

0

EgonOlsen - AVR może nie, ale ARMa w Javie bez problemu. KVM na tym śmiga.

Java powstała na początku jako język który miał mieć główne zastosowanie do programowania mikrokontrolerów. Teraz procki stosowane w tel. komórkowych czy PDA mają sprzętowe wsparcie dla wykonywania bajtkodu Java. :-P

0
Krolik napisał(a)

Teraz procki stosowane w tel. komórkowych czy PDA mają sprzętowe wsparcie dla wykonywania bajtkodu Java. :-P

Nie mowimy o tak skomplikowanych urzadzeniach, mowimy dedykowanych urzadzeniach elektronicznych, np. elektronice fizycznej.

0

Nie zapominaj, że te "tak skomplikowane" urządzenia są masowo wykorzystywane i tanieją z roku na rok. I w pewnym momencie może się okazać, że użytkowy, produkowany na masę ARM jest tańszy i nadaje się lepiej niż jakiś niszowy mikrokotroler stosowany w sprzęcie fizycznym. Z drugiej strony nie przeczę, że najtańsze i najprostsze mikrokontrolery też będą miały wzięcie. I dlatego C pewnie będzie jeszcze z nami bardzo długo.

0
Krolik napisał(a)

I dlatego C pewnie będzie jeszcze z nami bardzo długo.

na pewno dluzej niz JAVA i to niekoniecznie z tych powodow.

0

prostota i pewnosc?

0
cepa napisał(a)

prostota i pewnosc?

Prostota nie, ponieważ trzeba pamiętać zbyt wielu rzeczach np. obsłudze pamięci.
Pewność, też nie za bardzo. Sądzę, że wiele "niszowych" kompilatorów jest dziurawych jak szwajcarski ser*.

Java jak widać najlepsza (i to stwierdzenie pojawi się pod każdym moim postem w tym temacie)

  • tu zasięgnąłem opinii człowieka programującego układy na potrzeby ciepłownictwa i energetyki.
0

Prostota i pewność? Przecież żeby napisać na przykład uniwersalną metodę sortującą trzeba wyłączyć zupełnie kontrole typów.

(Zaraz ktoś się spyta po co komu kontrola typów, a ja mu nie odpowiem - niech żyje w ciemnocie)

Kiedyś powstało dużo softu w C i projekty nadal są rozwijane + powszechność w szkołach i pewnie stąd ciągła popularność.

0
EgonOlsen napisał(a)

Sprobujcie w JAVIE albo Pythonie zaprogramowac jakis AVR albo inny mikrokontroler :P

AVRPY lub PyMite

0

W javie NanoVM:
http://www.harbaum.org/till/nanovm/index.shtml

Java jak widać najlepsza

0

Prostota i pewność? Przecież żeby napisać na przykład uniwersalną metodę sortującą trzeba wyłączyć zupełnie kontrole typów.

Wcale nie trzeba, wystarczy zasymulować szablony :P Przykład:
#define SORT(type, prefix)
void prefix##sort(type a**) {
...
}
Potem:
SORT(int, int_)
...
int tab[10];
int_sort(tab)

I jest spradzanie typów. Poza tym do Javy 5 nie było genericsów i jakoś nikt wielce nie płakał.

0

I jest spradzanie typów. Poza tym do Javy 5 nie było genericsów i jakoś nikt wielce nie płakał.

Nikt nie płakał tylko każdorazowo rzutował przy wybieraniu elementu z kolekcji. Genericsy w javie odwalają za programistę niewdzięczną robotę związaną z kontrolą typów przy wielu operacjach.

Swoją drogą podejrzewam, że w C można też coś podobnego zrobić wykorzystując meta programowanie i skrypty.

Java jak widać najlepsza

0

Fakt że C dośc popularne ale realnie patrząc raczej trudno na tym zarobić prawda?

0

Tak się składa, że nie długo rozpoczynam jako prace jako programista C więc jednak da się zarobić. I nie jest to bynajmniej praca związana ze sprzętem czy mikrokontrolerami.

0

Dobre. Jak słyszę że java na uP i do elektroniki to śmiech mnie trochę bierze (bez urazy). Czy ludzie zdajecie sobie sprawę z oszczędności uzyskiwanych na małych AVRkach? Przecież te cudeńka mają np. po 1kB flasha i 64 bajty RAMu a można na nich zrobić np. czytanie informacji z impulsatora, analizator położenia potencjometru, włącznik itd itd. A koszt? 2zł :). Nie ma tańszego rozwiązania. Ja na takim małym cudeńku zrobiłem sterownik telefonu komórkowego (no to akurat w asm, ale zrobiłem). Na 2kB można zrobić w C. Na 8 kB ludzie pisząc w C tworzyli niesamowite rzeczy, a pisząc w ASM zostawało im jeszcze 50% pamięci.

Inna kwestia. Moc. AVR w stanie uśpienia pobierają <100uA, w normalnej pracy <10mA, przy pełnym obciążeniu wyjść ok 200mA (w zależności od modelu). To daje im duże możliwości wszędzie tam, gdzie potrzebna jest oszczędność.

Natomiast jeśli chodzi o inne techonologię, to wydaje mi się, że zapomniano tutaj o CPLD i FPGA. Tutaj to dopiero można się zdzwić. Dla wtajemniczonych powiem, że tutaj nie pisze się w C czy Javie czy też w ASM :). Tutaj buduje się z "brameczek", czyli jeszcze niżej. Można zadać pytanie - dlaczego? Odpowiedź jest prosta - wydajność którą można uzyskać z CPLD jest ogromna, bo są to specjalistyczne układy, które biją na głowę javę, C i ASM. Żeby napisać w javie coś równie wydajnego potrzebny byłby proc 10-cio (a nawet więcej) razy szybszy niż tani CPLD. A co robi się na FPGA? Te układy to potęga. Też się projektuje ręcznie a ich możliwości są tak duże, że można zrobić analizator widma akustycznego z wyświetlaniem na ekranie monitora komputerowego i interfejsem użytkownika :). Mają tak wielkie możliwości, że na nich można procesor zbudować :P.

Dlatego w elektronice jest popularny C i ASM. Każdy szuka tej wydajności i oszczędności. W tym celu nawet schodzi się poniżej ASMa do CPLD i FPGA, bo tam na 100MHz można osiągnąć to co w C na procku 500MHz a w javie (lepiej nie mówić).

EgonOlsen - racja. C, ASM jeszcze długo będą królować na miniaturowym sprzęcie, bo tak naprawdę tylko taki sprzęt jest najwyższej klasy i nikt chyba javie nie powierzy czuwania nad piecem hutniczym :). Przynajmniej ja bym z takiej pracy nie skorzystał :P

0

@rr, tylko mała rzecz. Programowaniem elektroniki mało kto się na świecie zajmuje. Swoją drogą zapomniałeś iż Java została pomyślana jako język do programowania mikrokontrolerów, a że wyszło jak wyszło to inna sprawa. Zresztą programowania za pomocą "lutownicy" będzie zawsze wydajniejsze niż w jakimkolwiek języku. Po prostu układ jest otymalizowany pod konkretne działanie. Jednocześnie nie wiele więcej może.

Java jak widać najlepsza

0

Programowanie FPGA i CPLD na dzień dzisiejszy w Polsce to jest nisza. Do sterowania pralką dużo bardziej opłaca sie jakiś procesorek dać. Troche lepiej sytuacja wygląda za granicą chociaż i tak najłatwiej znaleźć pracę związana z Javą.

0
RR napisał(a)

C, ASM jeszcze długo będą królować na miniaturowym sprzęcie, bo tak naprawdę tylko taki sprzęt jest najwyższej klasy i nikt chyba javie nie powierzy czuwania nad piecem hutniczym :). Przynajmniej ja bym z takiej pracy nie skorzystał :P

Hmm. A co powiesz na duży akcelerator cząstek w CERN? Oprogramowanie, które go monitoruje napisali w Javie [1]. Myślę, że skala tego rozwiązania jest na tyle duża, iż w asmie czy C bardzo ciężko byłoby to napisać przy zachowaniu odpowiedniej stabilności i bezawaryjności. Być może czuwanie nad piecem hutniczym jest prostsze...

[1] http://searchsoa.techtarget.com/originalContent/0,289142,sid26_gci1261398,00.html

0
Koziołek napisał(a)

Java jak widać najlepsza

Sorki, że OT, ale nie mogłem się powstrzymać. Koziołek, z całym szacunkiem, ale możesz już sobie darować. Znamy Twoją subiektywną opinię, nie musisz się powtarzać. Nie mam nic przeciwko Javie (tak samo jak C), ale zdecydowanie nie zgodzę się, że "Java jak widać najlepsza".

Bez urazy of course.

0

@brodny, na początku pisałem, że w tym temacie każdy post będę kończył tym stwierdzeniem.

Co do samego rankingu to wygląda na to, że obejmował tylko języki wysokiego i, jak ja to nazywam, średniego poziomu (tu przykład to C, można pisać "niskie" rzeczy można tez "wysokie"). Zatem kombinowanie z asemblerami raczej nie podpada pod to zestawienie.

tradycyjnie na koniec:
Java jak widać najlepsza

0
Koziołek napisał(a)

tradycyjnie na koniec:
Java jak widać najlepsza

Też jestem za tym, że Kartaginę należy zniszczyć a Balcerowicz musi odejść. A tak w ogóle to "A Vibovit jest lepszy!"

0
Też jestem za tym, że Kartaginę należy zniszczyć a Balcerowicz musi odejść. A tak w ogóle to "A Vibovit jest lepszy!"

Zazdrość przemawia. Faktem jest, że Java jest najpopularniejsza ponieważ z zaawansowanych języków ogólnego przeznaczenia oferuje obecnie najlepsze rozwiązania. O popularności nie decydują programiści, a managerowie, którzy czuwają nad projektami biznesowymi. Dal niech liczy się cena, szybkość i jakość (w tej kolejności). Obecnie tylko Java zapewnia bardzo wysokie wskaźniki we wszystkich trzech aspektach. Jest darmowa, posiada wiele gotowców, a kod w niej tworzony ma wysoką jakość. Jedyną konkurencją jest platforma .NET, która jednak jest płatna na poziomie wdrożenia (o Mono mi nie mówcie, bo to porażka), a poza tym obarczona jest "Piętnem Microsoftu". Sądzę, że ranking w duże j mierze oddaje preferencje nie programistów, a klientów.

Java jak widać najlepsza

0

Jak widac kozły są najbardziej uparte ze wszystkich zwierząt ;p I potrafia wywołać flejma ze zwykłego tematu.

0

bardzo ładnie proszę moderatorów o zablokowanie poniższego topica jako że już nic pozytywnego z tej "rozmowy" nie wyniknie

0
ad-hoc napisał(a)

Jak widac kozły są najbardziej uparte ze wszystkich zwierząt ;p I potrafia wywołać flejma ze zwykłego tematu.

W swym uporze drążą też temat. Swoją drogą jak bym to wrzucił w sygnaturę to wszyscy by olali. ok. eot i już nie będę miał tego podpisu.

Jeszcze jedno przemyślenie, które mi się nasunęło, nie wiedzieć czemu, po słowach @to mógł być ktokolwiek. Popularność C może wynikać też z jego "akademickiego" charakteru. Na wielu wydziałach na których wykłada się programowanie jako takie. Wszelkie przykłady są podawane w C/C++. Skoro zatem ranking korzysta przede wszystkim ze statystyk wyszukiwania to należało by zastanowić się nad tym aspektem. Student, który nie za bardzo chce zajmować się programowaniem, a jednocześnie musi wykonać zadanie zacznie pracę od prostego przegooglowania się po świecie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1