LINUX.ORG.RU

Стоит ли учить С для развития или скриптовых языков достаточно?


0

5

Задался в свободное время посвятить себя изучению оного языка. Не могли бы посоветовать литературу, которая вам помогла в освоении. Ну а если вы думаете, что Си учить не надо, то почему?


Да. Стоит очень. Глупо было бы говорить о том, что С - это слабый язык и скажем питон будет гораздо полезнее и приятнее.

Но я всёравно буду советовать Caml )

nCdy
()

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

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

> Не учите новый язык, если он не перевернёт ваше представление о программировании (с).

Это откуда? Даже не гуглится почему-то…

blexey ★★★★★
()

Сам сторонник скриптовых языков, однако есть вещи, которые разумнее написать на компилируемых языках, а си, как известно является самым распространенным. На гцц и г++ чудесно пишутся побочные программки для обработки данных, которые запускаются скриптами БАШа, из чего получается неплохая и стабильная система, причем такой принцип организации можно применять практически повсеместно.

sudo-s
()
Ответ на: комментарий от arturpub

> Принципы знать полезно, но писать более чем врапперы на нем не стоит.

Какие ещё врапперы, блджад, вокруг чего?

gandjubas
()

С язык простой. Чуть сложнее ассемблера (он по факту им и является), гораздо сложнее - это приёмы реализации на нём тех или иных вещей и вот они-то и съедают очень много времени. И простое заучивание книги без живой практики, скорее всего, ничего не даст. Скриптовых языков достаточно только для скриптов. И это... цели этого садомазохизма какие? Имеется ввиду целевое применение? Ну там телеком, АСУ, веб, научные работы?

iBliss
()

Скрипты - это мощно, но они не заменят бинарники.

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

спасибо товарищ, Ваш пост содержит чрезвычайно интересный контент

конечно не только размером, но мы ведь говорим про вменяемые языки, не?

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

Возможно вы имели в виду: C++.

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

с каких это пор C вменяемый?

а что не так с Си?

Это ж BDSM.

bdsm можно делать с использованием любых предметов и технологий, но от этого они не становятся автоматически извращенскими

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

>Если выучить Си, можно выучить Qt.

А тех кто не различает C и C++ нужно поучать розгами

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

>а что не так с Си?
Указатели во все поля, в т.ч. любимый массажёр всех C программеров char*. Нет нормальных классов, только костыли и т.д.

bdsm можно делать с использованием любых предметов и технологий, но от этого они не становятся автоматически извращенскими

Да ладно, не стесняйся :}

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

Си - простой язык

#include "pt.h"
 
struct pt pt;
struct timer timer;
 
PT_THREAD(example(struct pt *pt))
{
  PT_BEGIN(pt);
 
  while(1) {
    if(initiate_io()) {
      timer_start(&timer);
      PT_WAIT_UNTIL(pt,
         io_completed() ||
         timer_expired(&timer));
      read_data();
    }
  }
  PT_END(pt);
}

Попробуй написать такую библиотеку для многопоточности, используя чистый Си, без ассемблера и API операционной системы.

prischeyadro ★★★☆☆
()

Почитать вводные главы можно (почти в каждой книжке по любому языку они есть), чтобы удостовериться в том, что там нет ничего сложного.

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

простой язык не подразумевает простые задачи.

ymn ★★★★★
()

> Стоит ли учить С для развития или скриптовых языков достаточно?

Необходимо, имхо. Склеивающий скриптовой и низкоуровневые C/Asm являются дополнениями друг друга.

> Не могли бы посоветовать литературу, которая вам помогла в освоении.

K&R. Ещё, как тут на Лоре советовали, Ален Голуб «Веревка достаточной длины, чтобы выстрелить в ногу» оказалась неплохой, сам читаю в метре.

> Ну а если вы думаете, что Си учить не надо, то почему?

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

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

Смотря какой инструмент. Кнут рекомендует начинать с ассемблера.

drSchur ★★★
()

Начинай от сюда. Хотя и немного избыточно - зато фундаментально.

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

>а что не так с Си?

Указатели во все поля, в т.ч. любимый массажёр всех C программеров char*. Нет нормальных классов, только костыли и т.д.

так это всё у тебя болит потому что ты не осилил, или потому что микроскопом гвозди забивал?

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

Тот случай, когда «простота понимания» хуже воровства. Пистолет ПМ - простой пистолет. Но тебе его не дадут, пока не выучишь статьи 11 и 12 :)

slackwarrior ★★★★★
()

Пока я был на учебе, здесь загорелись некоторые страсти. Благодарю за обсуждение данного вопроса. Насчет себя, то Си мне нужен для более лучшего понимания механизма скриптовых языков. Выстрелить в ногу на Си можно и это меня в нем привлекает, здесь как полная свобода, которая не ограничивает. Думаю, скриптовых языков для любого уважающего себя программиста не должно хватать и он должен расти затрагивая области более низкого программирования, где Си правит балом. К тому же для меня это в новинку, буду учиться понимаю механизмов программирования в данной области. Да и просто я считаю, что любые знания всегда понадобятся.

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

вообще говоря, для решения 99,9999% задач хватит знания чего-нибудь низкоуровневого (вроде C), высокоуровневого (C#/Java), скриптового (bash/python/perl...) и функционального (Erlang, Haskell, OCaml...)

удачи)

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

Со всем почти согласен, но с Erlang, Haskell и ежели с ними идущими функциональными языками не имел дел. А так, да, Си => Java(С++) => Ruby(Python).

Спасибки)

Ginki
() автор топика
Ответ на: комментарий от shty

По делу будет что или про попоболь твою будем?

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

> Си мне нужен для более лучшего понимания механизма скриптовых языков.

здесь как полная свобода, которая не ограничивает.

Думаю, скриптовых языков для любого уважающего себя программиста не должно хватать и он должен расти затрагивая области более низкого программирования

я считаю, что любые знания всегда понадобятся.

Всё правильно.

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

Думаю, на основной вопрос по выбору литературы мне ответили. На вопрос о выборе языка тоже. Спасибо за констатацию, вопрос решен.

Благодарю всех, кто помог и отписался в теме.

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

> Думаю, на основной вопрос по выбору литературы мне ответили.

Я б тебе посоветовал после K&R почитать либо Стефана Кочана, либо Харисона и Стила. K&R - хорошо для затравки и начального ознакомления, но многие мелочи у них опущены.

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

Tuples в хаскеле, например, подойдут?

Кортежи в хаскеле с точки зрения представления в памяти это то же самое что и

typedef struct {
  void *fst;
  void *snd;
} tuple;

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

class Length t where
  length :: t -> Int

instance Length () where
  length _ = 0

instance Length b => Length (a, b) where
  length (x, xs) = 1 + length xs

Во-вторых, бесконечные кортежи хотят бесконечных типов:

ones :: ?
ones = (1, ones)

-- > Occurs check: cannot construct the infinite type: t1 = (t0, t1)

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

> читать приходилось?

Нет, только бегло просматривал. Ничем не запомилось.

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

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

Те, что я указал, переведены достаточно качественно.

Да, будешь иметь дело с русским переводом K&R - ищи поздние издания. В ранних изданиях у педиков из «Диалектики», которые издают переводы на русском от издательства Williams, были опечатки в коде.

LamerOk ★★★★★
()

Не стоит, пока не увидишь зачем конкретно тебе это надо. Для развития гораздо полезнее изучать конкретные подходы и практики в программировании(различные способы rpc, программирование без блокировок, (де)сериализация, взаимодействие компонентов). Одного знания С недостаточно для написания эффективных приложений, гораздо плодотворнее может быть изучение способово дробления приложения на части и их асинхронное взаимодействие. В конечном счёте, если ты пишешь не Ось или системные компоненты, то и javascript будет хорошим языком, достаточным для всего.

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

> Как осознаешь всё, что там написано - возвращайся, расскажешь нам о простоте еще разок.

И? Простенький язык-то. Если сравнивать с тем же C++ - так и вовсе элементарный. Компилятор по этому самому стандарту за неделю пишется. Да и разработчики языка явно не старались себе работу усложнить. Чуть что - UB, и вся недолга.

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

> 4.2 Что, кроме хэлловорлдов, ты написал на С?

Деточка, если ты язык не осилил, это не значит, что он сложный. Это только лишь показатель твоего собственного уровня развития.

Си - один из самых простых языков из практически применимых. Та же Схема, если ее использовать не только для поиграться, тоже резко становится весьма сложной (что явным образом отразилось в том, как разбух R6RS по сравнению с R5RS). Так что, да, конечно же Си сложнее чем Unlambda, но из применимых на практике языков он один из самых простых.

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

> Простота, товарищ, меряется не размером.

Детко, man «алгоритмическая теория информации Колмогорова», там очень четко дается определение того, что такое сложность.

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