Daily Deal: The Complete C++ Programming Bundle
from the good-deals-on-cool-stuff dept
C++ is an object-oriented programming language that is viewed by many as the best language for creating large-scale applications. The Complete C++ Programming Bundle will help you on your way to mastering this important language. With 67+ hours of tutorials, you'll move through the fundamentals of C++ and onto more advanced techniques. This bundle is available in the Techdirt Deals Store for $45.Note: The Techdirt Deals Store is powered and curated by StackCommerce. A portion of all sales from Techdirt Deals helps support Techdirt. The products featured do not reflect endorsements by our editorial team.
Thank you for reading this Techdirt post. With so many things competing for everyone’s attention these days, we really appreciate you giving us your time. We work hard every day to put quality content out there for our community.
Techdirt is one of the few remaining truly independent media outlets. We do not have a giant corporation behind us, and we rely heavily on our community to support us, in an age when advertisers are increasingly uninterested in sponsoring small, independent sites — especially a site like ours that is unwilling to pull punches in its reporting and analysis.
While other websites have resorted to paywalls, registration requirements, and increasingly annoying/intrusive advertising, we have always kept Techdirt open and available to anyone. But in order to continue doing so, we need your support. We offer a variety of ways for our readers to support us, from direct donations to special subscriptions and cool merchandise — and every little bit helps. Thank you.
–The Techdirt Team
Filed Under: daily deal
Reader Comments
Subscribe: RSS
View by: Time | Thread
What Version Of C++?
Also, I like this quote from the blurb:
You may need to unlearn a bunch of C++ stuff before learning a more high-level language like Python...
[ link to this | view in chronology ]
Re: What Version Of C++?
According to my resume, I speak over 60 programming languages to varying levels of fluency. My postgrad work was on compilers, in case you were curious, and I still do the Pragmatic Programmers thing of a new language every year.
No matter what your first programming language is, you need to unlearn stuff to learn your second programming language. There does come a point where you no longer need to unlearn anything, which happens somewhere around the 4th paradigm.
Incidentally, you probably have to unlearn more going from Python to C++ than you would going from C++ to Python. C++ has sane variable scoping rules, for a start.
[ link to this | view in chronology ]
Re: sane variable scoping rules, for a start.
if freetype2 != None :
@staticmethod
def create_for_ft_face(face, load_flags = 0) :
"creates a FontFace from a freetype2.Face."
if not isinstance(face, freetype2.Face) :
raise TypeError("face must be a freetype2.Face")
#end if
cairo_face = cairo.cairo_ft_font_face_create_for_ft_face(face._ftobj, load_flags)
result = FontFace(cairo_face)
if cairo.cairo_font_face_get_user_data(cairo_face, ct.byref(_ft_destroy_key)) == None :
check(cairo.cairo_font_face_set_user_data
(
cairo_face,
ct.byref(_ft_destroy_key),
ct.cast(face._ftobj, ct.c_void_p).value,
freetype2.ft.FT_Done_Face
))
freetype2.check(freetype2.ft.FT_Reference_Face (face._ftobj))
# need another reference since Cairo has stolen previous one
# not expecting this to fail!
#end if
result.ft_face = face
return \
result
#end create_for_ft_face
@staticmethod
def create_for_file(filename, face_index = 0, load_flags = 0) :
"uses FreeType to load a font from the specified filename, and returns" \
" a new FontFace for it."
_ensure_ft()
return \
FontFace.create_for_ft_face(ft_lib.new_face(filename, face_index), load_flags)
#end create_for_file
else :
@staticmethod
def create_for_ft_face(face) :
"not implemented (requires python_freetype)."
raise NotImplementedError("requires python_freetype")
#end create_for_ft_face
@staticmethod
def create_for_file(filename, face_index = 0, load_flags = 0) :
"uses FreeType to load a font from the specified filename, and returns" \
" a new FontFace for it."
_ensure_ft()
ft_face = ct.c_void_p()
status = _ft.FT_New_Face(ct.c_void_p(_ft_lib), filename.encode("utf-8"), face_index, ct.byref(ft_face))
if status != 0 :
raise RuntimeError("Error %d loading FreeType font" % status)
#end if
try :
cairo_face = cairo.cairo_ft_font_face_create_for_ft_face(ft_face.value, load_flags)
result = FontFace(cairo_face)
check(cairo.cairo_font_face_set_user_data
(
cairo_face,
ct.byref(_ft_destroy_key),
ft_face.value ,
_ft.FT_Done_Face
))
ft_face = None # so I don't free it yet
finally :
if ft_face != None :
_ft.FT_Done_Face(ft_face)
#e nd if
#end try
return \
result
#end create_for_file
#end if freetype2 != None
[ link to this | view in chronology ]
Re: Re: sane variable scoping rules, for a start.
I mean this is basically "pythonized" C FFS.
Python was never meant for this kind of crap...
[ link to this | view in chronology ]
c-programming
[ link to this | view in chronology ]