LINUX.ORG.RU

Язык программирования Си сложен в изучении?

 , ,


4

1

Тошнит от pascal, около 2-ух месяцев изучаю на нем азы программирования. Хочу начать программировать на языке уровнем пониже. Из известных мне понравился си, но вот спросил у знакомого, а он сказал что си очень сложен. Особенно укаатели, говорил лучше изучать его 3-им или 4-ым по счету. Конечно я понимаю, что с моим багажом знаний я буду быдлокодить по крупному, но программирование мне нравится. Блин так ли он сложен как его знакомый малюет?



Последнее исправление: cetjs2 (всего исправлений: 1)
Ответ на: комментарий от Corey

На самом деле, я не коллизии имел в виду, но про них тоже знать полезно :)

ВНЕЗАПНО: скорее вредно. Т.е. «вообще» полезно конечно, но не нужно обмазываться низкоуровневой реализацией.

emulek
()
Ответ на: комментарий от anonymous

Пруфцы будут предыдущих достижений, либо сольёшься как предыдущий оратор на «сасайлалка»?

ты сначала зарегистрируйся, а потом уже свои пруфы выложи. А вот уже потом будешь что-то требовать от других.

А пока ты просто ссыкливое безымянное говно.

emulek
()
Ответ на: комментарий от Corey

Ты хочешь с этим поспорить? Конечно ты там проигнорил опасное для тебя предложение, но всё же повторю - давай это проверим. Покажи мне как ты там осилил «структуры данных» - придумывай примеры, я тебя обоссу и мы разойдёмся.

Заодно и насколько работает твой кукаретинг про велосипеды и прочее.

anonymous
()
Ответ на: комментарий от Moonysh

А, это еще и некро-топик, который какие-то идиоты анонимусы апнули.

Moonysh
()
Ответ на: комментарий от emulek

В отличии от предидущих ораторов я могу представить пруфцы твоей тотальной некомпитентности и кукаретинга - Правильно ли я организовал выделение памяти? (комментарий) такой же слив на «сасай лалка».

Ну вообще-то тем кто надо знает меня и детектит каждую мою месагу, так же как и ты. Когда ты обосрался мой образ заклеймился у тебя в пустой черепушке и теперь ты будешь меня детектить с 99% шансом.

anonymous
()
Ответ на: комментарий от anonymous

Ну вообще-то тем кто надо знает меня и детектит каждую мою месагу, так же как и ты

да кому ты нужен? Открою тебе тайну, тут ещё несколько таких как ты, и вы для меня на одно лицо. Убейся, ты не уникален. Таких как ты 95%, просто большинство стесняется писать на ЛОР. А ты — нет.

emulek
()
Ответ на: комментарий от Corey

к моему вящему удивлению, вероятно, проще чем на Си или Питоне. там не только отличная производительность, но и вот такие отличные штуки:

http://docs.julialang.org/en/latest/manual/running-external-programs/ (крутой шелл)

http://docs.julialang.org/en/latest/manual/calling-c-and-fortran-code/ (без биндингов!)

http://docs.julialang.org/en/latest/manual/parallel-computing/ (омг эрланг? забыть-забыть)

https://github.com/JuliaLang/IJulia.jl/tree/master/python/julia (вызов джулии из питона)

https://github.com/stevengj/PyCall.jl (и наоборот)

весьма интересный короче язык, надо поковырять плотнее. спасибо x3al!

val-amart ★★★★★
()
Ответ на: комментарий от anonymous

Напоминаю нищему анскильному лоху, что он нищий анскильный лох. Вспомнил?

Так вот, с какой это радости нищий анскильный лох продолжает бредить про скиллы и царей?

anonymous
()
Ответ на: комментарий от anonymous

кто надо знает меня

да, ты очень надутая тупая лалка :) Очень узнаваемая.

slackwarrior ★★★★★
()
Ответ на: комментарий от emulek

мне глупо включать всё в каждый файл

Дык, понятно: в h-файлах должны быть лишь те инклюды, без которых самому h-файлу не обойтись (скажем, где-то ты определил структуру A, а в этом объявляешь функции с такой структурой, ясен пень, нужно будет заинклюдить заголовочный файл с определением A).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от anonymous

Царь иудейский тоже нищим бродягой был, и въехал в Иерусалим на осле.

anonymous
()
Ответ на: комментарий от val-amart

ну так абстрагируй сначала эти детали

Опять-таки, мне и об этом придётся думать.

разве не все начинают с подключения своей «библиотеки» макросов?

Макросы — замечательный способ создать максимально текущие абстракции.

но это — механические детали, а не детали абстракции.

Естественно, потому что детали абстракции вообще от языка не зависят.

«насколько легко будет создать абстракцию ДАННОГО уровня» от языка не зависит, от языка зависит только насколько легко будет ее механически закодировать.

Тогда что понимается под словом «создать»? Выдумать? Выдумать можно что угодно, но если язык активно мешает тебе это закодировать, то он сложен.

Miguel ★★★★★
()
Ответ на: комментарий от Miguel

Julia’s type system is dynamic, but gains some of the advantages of static type systems by making it possible to indicate that certain values are of specific types. This can be of great assistance in generating efficient code, but even more significantly, it allows method dispatch on the types of function arguments to be deeply integrated with the language.

Всё не так плохо

x3al ★★★★★
()
Ответ на: комментарий от Miguel

Макросы — замечательный способ создать максимально текущие абстракции.

Компилятор Си - тоже, своего рода, макрос. И как, сильно протекло?

anonymous
()
Ответ на: комментарий от x3al

possible to indicate that certain values are of specific types.

Всё именно так плохо.

Miguel ★★★★★
()
Ответ на: комментарий от val-amart

выдумать. это — сложно. закодировать, по сравнению с этим — легко

Если делать это на языке высокого уровня. Тогда да.

Miguel ★★★★★
()
Ответ на: комментарий от x3al

Мне вот реально интересно, когда вы балаболите вы хоть понимаете какую чушь вы несёте?

Вопервых те бенчмарки не имеют смысла - это куски говно, конечно вам это трудно понять, но «скорость» ЯП зависит не от умения раскручивать примитивный фор на счётчиках, а от возможностей этого самого ЯП, которые и позволяют писать «быстрый» код.

Недоязычек который ты привел по ссылки - кусок говна, ни с какой сишкой он не сравнится, а те бенчмарки релеватны вменяемым только для полхных нулей и студентов. Половина их - это вызов сишной интелевоской либы, которая к недоязычку не имеет отношения, а половина явный бред.

Давай я тебе приведу пример от которого у меня бомбануло:

double pisum(void) {
  double sum = 0.0;
  for (int j=0; j<500; ++j) {
    sum = 0.0;
    for (int k=1; k<=10000; ++k)
      sum += 1.0/(k*k);
  }
  return sum;
}

Бенчмарк деления не имеет смысла, бенчмарк флоатов не имеет смысла(у флоатов есть одна кривожопость из-за которой порядок вычисления влияет на результат - по этой причине конпелятор абсалютно не может что-то сделать с похожими циклами и пацаны, которые это понимают дурят вас как детей), смесь интов и даблов - тотальный фейспалм.

Обоссанно: http://pastebin.com/w5iX1VSd - я тут специально не заморачивался, не юзал интринсики, ибо это типа «либа» к сишке и прочее. Это чисто гнутая векторая сишка + нормальный цикл без интов и та параша.

SPHK_vec:        49.3450221554, 0.277173sec
SPHK:            49.3450221554, 0.552217sec
SHIT:            49.3450221554, 0.945125sec
Если же мы скажем конпелятору класть на «точность», то:
SPHK_vec:        49.3450221554, 0.279569sec
SPHK:            49.3450221554, 0.573039sec
SHIT:            49.3450221554, 0.282096sec
Т.е. он запилил код на уровне моего. Но что же нас выдаёт омегапонтовая джулия:
1.156384sec
Ахринеть, крайне полезно. В целых 1.22медленней ихнего сишниго и в овер 2раза медленней нормального сишного(SPHK:), причем «точность»(это не точность, это мусор за пределами значимых разрядов) не страдает.

Причем если попотеть можно ещё раза в 2обоссать, но проблема недоязычков в том, что как бы ты не потел - ты выше 1.15 не прыгнешь и именно поэтому они недоязычки.

На реальных же задачах твоя жулия сольёт на порядки, причем в говно по всем параметрам, начиная от читаемости, компактности и заканчивая качеством самого кода.

Ах да, я поменял for k = 1:10000 на for k = 1.:10000. - стало: 2.546188. Т.е. оно просто нулёвое, это даже не реальная производительность, а какая-то эвристика спешлфорбенчмарк. Как это тотальное днище вообще можно линковать в этом разделе?

anonymous
()
Ответ на: комментарий от anonymous

Ах да, я даже ещё в 2раза обоссал. Уже в овер4раза. Да и ещё в 2раза можно.

anonymous
()
Ответ на: комментарий от val-amart

В нём нет производительности, запомни уже аксиому: «недоязычек никогда не может быть даже на уровне сишки» и если кто-то тебе говорит, что какой-то там язычек «догоняет» сишку, то будь уверен, что тебя обманули и сам язычек тотальное говно. Выше я описал почему.

И да, запомни ещё одну аксиому: «простота языка обратнопропорциональна его „производительности“ и когда ты в одном предложении упоминаешь „проще“ и „производительность“ - где-то умирает котёнок и норм пацан расшибает себе лицо фейспалмом.

Эта примитивщина имеет производительность чуть выше, чем пхп и то лишь благодаря ллвм, а пхп имеет производительность на уровне нуля.

anonymous
()
Ответ на: комментарий от hobbit

В Си её нет. Есть только раздельная компиляция и ряд костылей типа #include для имитации модульности. При этом ответственность за малейшую ошибку несёт программист. Чтобы не ловить глупые ошибки:

Лишь по твоему глупому разумению.

строго разделяй файлы .h и .c - в первых определение, во вторых реализация;

Инфа сотка, уже плюсы от этого уходят, но гордый пацан рекомендует. Это разделение ничего кроме кастылей в конпеляторе, тормазов и тонн говна не несёт.

включай в каждый модуль ВСЕ необходимые ему #include, не полагайся на неявное включение;

Тут нет никаких «модулей», ты же сам говорил об этом. Об этой примитивщине ему скажет конпелятор по дефолту.

в каждом .h обязательно делай страж компиляции и следи, чтобы имена стражей были уникальными.

Либо осиль матчасть.

Имитация модульности - гораздо большая проблема для начинающего сишника, чем пресловутые указатели.

Какая модульность? Такие вопросы возникают у нулей с головой забитой всякой абстрактной мурой. Тут нет никаких модлец - они нахрен не нужны и если у тебя возникло желание их эмулировать - иди в жаву.

Тем более, что в паскале указатели тоже есть.

Есть пародия на указатели, которых максимум на что хватит - дак на студенскую лабу, не более.

А вообще изучать Си в линуксе легко и приятно благодаря наличию gcc, make и mcedit :) Вместо mcedit можно подставить vim или emacs.

Не благодаря gcc, а благодаря вменяемому окружению. Ну тем, что это заставляет хотябы минимально понять, что есть конпелятор и что это не кнопочка «билд» в идешке. В частности man"ам.

anonymous
()
Ответ на: комментарий от tailgunner

Как собирал, на чём запускал нам скажет питушок? Где SPHK_vec? Тыб хоть кукарекал по человечски, кусок обсоска. Где результаты жулии, какой конпелятор?

Выкати -S.

anonymous
()
Ответ на: комментарий от anonymous

питушок? Тыб хоть кукарекал по человечски, кусок обсоска.

Утипути, у нашего чоткого поцанчега мгновенно заболела попка.

Как собирал

gcc -std=gnu99 -O2

на чём запускал

model name : Intel(R) Core(TM) i7-3630QM CPU @ 2.40GHz

какой конпелятор?

gcc version 4.7.2 (Debian 4.7.2-5)

Где SPHK_vec?
Где результаты жулии

Они меня не интересуют.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Ты опять вылезло, пизданутое ничтожество? Когда же тебе наконец станет стыдно за то, что ты существуешь?!?

anonymous
()
Ответ на: комментарий от tailgunner

Утипути, у нашего чоткого поцанчега мгновенно заболела попка.

Причем тут попка, ущербан. Суть в том, что ты написал это лижбы кукарекнуть и тебе абсалютно не интересно что и почему.

gcc -std=gnu99 -O2

Оно не могло так собраться, да и лично у меня на -O2 оно выкидывает говноцил из шита.

gcc version 4.7.2 (Debian 4.7.2-5)

У меня нет такого древнего говна.

Они меня не интересуют.

О как ты слился неслабо.

И как ты проигнорил про жулию и -S. Выкатывай -S, ибо с шансом 95% ты тупо брешишь, либо ты там что-то наменял, либо твой конпелятор чего-то (не)осилил. Скорее всего -mno-sse2

Работать дабл+дабл и инт+дабл одинакого не могут по определению, ибо int->double конвертера в симдах нет.

Выкатывай -S, я тебя обоссу и мы разойдёмся.

anonymous
()
Ответ на: комментарий от anonymous

Оказывается она уже «есть» cvtsi2sd и работает не как говно(раньше она работала раза в 3-4 медленней). А вот avx-деление работает(?) медленней ссешного и поэтому при -mavx щит работает медленней. Пусть мериют дальше деление.

Так же обсосинка собери с -Ofast, а потом собери на коре2. Да и вообще кусок говна суть не в этом, суть в том, что жулия в говне.

anonymous
()
Ответ на: комментарий от anonymous

Самое смешное, что каким-то образом на моей портянке оно не работает медленней. Забыл упомянуть.

anonymous
()

Начни с книжки Для чайников. А потом что-нибудь посерьёзнее, Дейтелей, например. Закрепи всё K&R.

paran0id ★★★★★
()
Ответ на: комментарий от Corey

А таблица умножения подробно обсосана в учебнике математики второго класса, что на это скажешь?

то, что это не доказывает того, что математику для профпригодности необходимо помнить как можно больше чисел из таблицы умножения. Т.е. доцент 234*752 помнит, а доктор математических наук помнит 234432*987323.

emulek
()
Ответ на: комментарий от Corey

Ну а кто тебя заставляет ей обмазываться. Об этих вещах не знать - это просто непрофессионально.

знать конечно надо. Но это жеж азы...

emulek
()
Ответ на: комментарий от tailgunner

Где SPHK_vec? Где результаты жулии

Они меня не интересуют.

facepalm. Именно в этом и есть суть послания анона, что на самом деле джулия отсасала. А ты ту доказываешь, что твой CPU хуже, чем тот, который был у анона.

emulek
()
Ответ на: комментарий от anonymous

Причем тут попка, ущербан

Попоболь объясняет твой подзаборный лексикон.

gcc version 4.7.2 (Debian 4.7.2-5)

У меня нет такого древнего говна.

Дешевые отмазки.

Выкатывай -S, я тебя обоссу и мы разойдёмся.

Недоумок, ты даже не понимаешь, что хочешь обоссать ты сам себя.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

В нём нет производительности, запомни уже аксиому: «недоязычек никогда не может быть даже на уровне сишки» и если кто-то тебе говорит, что какой-то там язычек «догоняет» сишку, то будь уверен, что тебя обманули и сам язычек тотальное говно. Выше я описал почему.

И да, запомни ещё одну аксиому: «простота языка обратнопропорциональна его „производительности“ и когда ты в одном предложении упоминаешь „проще“ и „производительность“ - где-то умирает котёнок и норм пацан расшибает себе лицо фейспалмом.

да, ППКС.

emulek
()
Ответ на: комментарий от tailgunner

Попоболь объясняет твой подзаборный лексикон.

вы оба хороши.

вернись к теме, суть послания анона не в этом.

emulek
()
Ответ на: комментарий от emulek

facepalm

Бетти, вы с царем друг друга стоите. Самоуверенные дебилы, молодой и старый.

вы оба хороши.

Нихрена, Бетти, нихрена. Я отвечаю ему в том же тоне, в котором он обращается ко мне. Обращался бы он вежливо - я бы и ответил вежливо.

ты ту доказываешь, что твой CPU хуже, чем тот, который был у анона.

Соотношение времен вариантов SHIT и SPHK заметил даже царь.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)

«Карта не есть територия »

вот и всё , что достаточно знать|понимать о указателях , что бы уметь в С.

ну и полезно понимать как С код отображается на ассемблер.

т.е та же книжка Код Пецтольда в этом полезна .

т.е как битовые строки в зависимости от читателя могут нести разный смысл.

qulinxao ★★☆
()
Ответ на: комментарий от Eddy_Em

форт (двухстековость с возможностью управлять потоком вычесления через манипуляции стека возвратов) - в некотором особом смысле как абстракция вычислителя проще чем машинка тьюринга.

qulinxao ★★☆
()
Ответ на: комментарий от qulinxao
К нам сегодня приходил 
НекроПедоЗоофил
Мертвых маленьких зверушек
Он с собою приносил!

А что нить не такое мертвое как Алгол?;-)

AIv ★★★★★
()
Ответ на: комментарий от tailgunner

Соотношение времен вариантов SHIT и SPHK заметил даже царь.

по делу что-то будет?

emulek
()
Ответ на: комментарий от AIv

различай алгол(жив в ...) и алгол68(жив в с++)

тебе же уже грили про фортресс(не взлетело)

вообще ща общее мнение , что возможность программисту выставлять операциям свои приоритеты и определять лево/право асоциативность и тем более добавлять свои «иероглифы» для обозначения операций есть «ненужно».

вообще таже история как символы(те и иные) закрепились в нонешней школьной записи того же матана полезна для понимания почему синтаксис общеупотребимого яп успешней когда есть чёткая граница между стандартом языка и лексемами с одной стороны и ...кодом пользователей этого яп

qulinxao ★★☆
()
Ответ на: комментарий от qulinxao

Вот про «матан» ненадо, да?;-) Потому что я всегда по мере необходимости могу ввести любую операцию-кракозябру (компактно обозначить длиннющую портянку выкладок), ввести правила работы с этой кракозяброй, и дальше с ней работать. Одна диаграммная техника чего стоит...

AIv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.