• 0

is c# better then c++?


Question

Recommended Posts

  • 0

I would argue that only professionals have any true reason to use C++. Newbies have no need for pointers, assembly, or manual memory management.

I would suggest learning C# with C (not C++) on the side. C will teach you low-level programming so you understand what's happening under the hood, while C# will teach you everything else and is the language you're more likely to use day to day.

The problem with C++ is a matter of poor design. It has so many hurdles and traps that it's a language that takes years to master.

  • Like 3
  • 0

Given the choice, Java is a better option than C# for cross-platform support.

I agree, for cross-platform support, java is better. But otherwise I find C# better. Visual Studio is a superb IDE and I find it far more polished than eclipse. Another thing to note is that Java is interpreted as far as I know while C# is not. So if you are counting on performance then Java is perhaps not the way to go.

Syntax wise, C# and Java are almost twins... libraries are obviously different though.

  • 0

I would argue that only professionals have any true reason to use C++. Newbies have no need for pointers, assembly, or manual memory management.

I would suggest learning C# with C (not C++) on the side. C will teach you low-level programming so you understand what's happening under the hood, while C# will teach you everything else and is the language you're more likely to use day to day.

The problem with C++ is a matter of poor design. It has so many hurdles and traps that it's a language that takes years to master.

I absolutely agree with this. I have seen enough horrible code in my lifetime made by coders that don't understand the underlying processes, thinking that the framework would "just do it" for them (which, most of the time it does, just not in an efficient way if you don't really know what's happening).

  • 0

I've heard that from Herb Sutter and it's quite amusing. Yes, most of C++'s library has its complexities documented, but maybe because there isn't much more than containers and algorithms in the C++SL... Containers and algorithms in .NET also have their algorithmic complexities documented, but there is no point documenting the algorithmic complexity of a Printer or Socket class.

I think you got it wrong. Due to the fact, that .NET and Java use OO and a whole lot of interface cruft for their containers' interfaces (opposed to C++'s container definition) you actually can't rely on the complexity of the containers in them - especially if you're using collections that are returned from foreign code. For example what does the List<XYZ> guarantee in terms of complexity in Java? Well nothing really, as it's an interface, List<XYZ> may actually be an array (class ArrayList) or it may be a linked list -> totally different complexities (and memory layouts -> access patterns) are involved here! You have no way of telling which one it is based on List<XYZ>. A similar thing happens in .NET?

Let's compare that to std::list<XYZ>: what does it guarantee? Well quite a bit:

1. The elements are stored in a double-linked list - there is no way around that bit!

2. Every operation on this list has a well defined complexity that no standard conforming implementation is allowed to break

2a. Insertion at front and back: O(1)

[3. Compared to Java: this list is really type safe (opposed to Java's type erasure "hack") - at least that one Microsoft got right?]

  • 0

I think you got it wrong. Due to the fact, that .NET and Java use OO and a whole lot of interface cruft for their containers' interfaces (opposed to C++'s container definition) you actually can't rely on the complexity of the containers in them - especially if you're using collections that are returned from foreign code. For example what does the List<XYZ> guarantee in terms of complexity in Java? Well nothing really, as it's an interface, List<XYZ> may actually be an array (class ArrayList) or it may be a linked list -> totally different complexities (and memory layouts -> access patterns) are involved here! You have no way of telling which one it is based on List<XYZ>. A similar thing happens in .NET?

Let's compare that to std::list<XYZ>: what does it guarantee? Well quite a bit:

1. The elements are stored in a double-linked list - there is no way around that bit!

2. Every operation on this list has a well defined complexity that no standard conforming implementation is allowed to break

2a. Insertion at front and back: O(1)

[3. Compared to Java: this list is really type safe (opposed to Java's type erasure "hack") - at least that one Microsoft got right?]

List<T>, ArrayList and LinkedList<T> are three different implementations in .NET, not interfaces; you are probably thinking about IList<T>, ICollection<T> and co. If you go through the MSDN documentation of each class you will see that their complexities are well documented.

  • 0

List<T>, ArrayList and LinkedList<T> are three different implementations, not interfaces; you are probably thinking about IList<T>, ICollection<T> and co. If you go through the documentation of each class you will see that their complexities are well documented.

1. I was talking about Java -> look it up these are the names of an interfaces (List) and two implementations (ArrayList, LinkedList)

2. In your code you have the following function:


public List<XYZ> getXYZList();
[/CODE]

What guarantees do you have for the result of [i]getXYZList[/i]? [b]None![/b] You have no idea what complexities the methods on this object actually have!

  • 0

1. I was talking about Java -> look it up these are the names of an interfaces (List) and two implementations (ArrayList, LinkedList)

2. In your code you have the following function:


public List<XYZ> getXYZList();
[/CODE]

What guarantees do you have for the result of [i]getXYZList[/i]? [b]None![/b] You have no idea what complexities the methods on this object actually have!

Ehm. Does it matter what complexities or whatever the things have? You know that whatever the result might be, it always has all the functionality specified in the List interface. If you want to be sure check what it is with an instanceof, or just create an ArrayList or whatever, and fill it up by iterating over everything in the List.

  • 0

Ehm. Does it matter what complexities or whatever the things have?

If you care about performance: definately yes! if you don't care about performance: F*** you! You're one of those scumbags that slow down PCs worldwide!

You know that whatever the result might be, it always has all the functionality specified in the List interface.

Which doesn't help at all in terms of performance?

If you want to be sure check what it is with an instanceof, or just create an ArrayList or whatever, and fill it up by iterating over everything in the List.

Hardly useable considering there are countless implementations of an interface. Don't forget: it's highly unlikely you're implementing everything in the application => you'll get objects via interfaces where you'll have no idea about their implementation in Java and .NET?

  • 0

I would argue that only professionals have any true reason to use C++. Newbies have no need for pointers, assembly, or manual memory management.

I would suggest learning C# with C (not C++) on the side. C will teach you low-level programming so you understand what's happening under the hood, while C# will teach you everything else and is the language you're more likely to use day to day.

The problem with C++ is a matter of poor design. It has so many hurdles and traps that it's a language that takes years to master.

I disagree. IMO all developers should know the concept of the stack vs heap and memory management, especially given that it's a core part of how most object-oriented languages work (C# included). Knowledge of memory management, even at a basic level gives understanding of how GC works, the difference between value types vs reference types in .NET, and so on.

However, for people just looking to make quick apps, learning a lower level language is probably excesive. If the user is looking at taking it up programming as a profession, knowledge of how this stuff works at a lower level should be mandatory (again, IMO). The OP didn't really specify though, so it's hard to give a good answer.

I don't think there's any value in learning C over C++ either. C++ is basically everything that C is, but you get all the benefits of OOP.

There are pointers in C#. And reference vs value types is basically the same idea as pointers vs values in C/C++.

Just because you can, doesn't mean you should. Doing pointer stuff in C# is a sin :p.

  • 0

I'm surprised nobody has said Java yet. Eclipse is a great free Java IDE, Java and C# are almost the same language, and Java is perfectly cross-platform, including GUI's.

I'm studying Applied IT and have been writing Java since september now. I've always used Eclipse with it, but I feel right at home in Visual Studio using C#. No reason to limit yourself to Microsoft with C# right from the beginning.

(in fact, C# is strongly 'inspired' on Java. But Java sort of forces you to write cleaner code (in my opinion), which will help you later on)

Java and C# are similar, but not at all the same languages. Java is missing so many language features that I use on a daily basis that I don't know if I could ever go back to Java after coding in C# for the last few years.

Properties, delegates, lambdas, events, anonymous classes, partial classes, reified generics, generators (yield return), extension methods, expression trees, and language-level async support (in .NET 4.5) are just a few of the C# language features that would be hard to live without; not to mention some of the functionality in the .NET framework like LINQ, Parallel Extensions, Entity Framework, MVC, etc...

About the only things I prefer about the Java language are the way they handled enums and enforcing exception handling at build-time.

  • 0

1. I was talking about Java -> look it up these are the names of an interfaces (List) and two implementations (ArrayList, LinkedList)

2. In your code you have the following function:


public List<XYZ> getXYZList();
[/CODE]

What guarantees do you have for the result of [i]getXYZList[/i]? [b]None![/b] You have no idea what complexities the methods on this object actually have!

Ahh Java, sorry missed that. I've thought a lil bit more about what you said and I do understand your reasoning now. Thing is one of the roles of interfaces is to hide implementation details. There is not much you can do in .NET (or Java) if a 3rd party library returns an IList<T> to the caller instead of a List<T>.

  • 0
Thing is one of the roles of interfaces is to hide implementation details.

True, but once you try to develop efficient - performance/watt - you sooner or later realize that heavy abstraction as provided by interfaces is actually the worst thing you can do! It's not even the dynamic dispatch (virtual function call) [though I even experienced that one too to become a problem?] , but the fact that you abstract away any information that will be suitable for creating the most efficient solution (e.g. linked-list vs array -> I think I don't have to say anything?)

  • 0

I disagree. IMO all developers should know the concept of the stack vs heap and memory management, especially given that it's a core part of how most object-oriented languages work (C# included). Knowledge of memory management, even at a basic level gives understanding of how GC works, the difference between value types vs reference types in .NET, and so on.

However, for people just looking to make quick apps, learning a lower level language is probably excesive. If the user is looking at taking it up programming as a profession, knowledge of how this stuff works at a lower level should be mandatory (again, IMO). The OP didn't really specify though, so it's hard to give a good answer.

I don't think there's any value in learning C over C++ either. C++ is basically everything that C is, but you get all the benefits of OOP.

That's why I suggested learning C, so you learn how things work "under the hood". The reason I recommend C over C++ is, as I said, poor design. C++ only overcomplicates things like object-oriented programming, things which would be much easier to learn in C#. C is also more low-level, requiring you to use malloc / free instead of new / delete, printf instead of cout << endl, structs instead of classes, and so forth.

  • 0

C++ only overcomplicates things like object-oriented programming, things which would be much easier to learn in C#.

Is it possible you only focus on the negative side of C++? How about the stricter type system - something that C could 99% of the time take a real advantage of - or the lack of stupid features (VLA come to mind?) . Or the fact that C++ is still relevant outside of kernels and embedded system - hell even there C++ is gaining ground (sans the "heavy" features [exceptions, virtual calls,?])?

requiring you to use malloc / free instead of new / delete, printf instead of cout << endl,

Apart from minor differences these solutions are interchangeable - i prefer the iostream-approach as it is way cleaner and typesafe? (I despise C-style IO)

structs instead of classes

they are virtually the same?

  • 0

Is it possible you only focus on the negative side of C++? How about the stricter type system - something that C could 99% of the time take a real advantage of - or the lack of stupid features (VLA come to mind?) . Or the fact that C++ is still relevant outside of kernels and embedded system - hell even there C++ is gaining ground (sans the "heavy" features [exceptions, virtual calls,?])?

Apart from minor differences these solutions are interchangeable - i prefer the iostream-approach as it is way cleaner and typesafe? (I despise C-style IO)

they are virtually the same?

That's why I suggested learning C, so you learn how things work "under the hood". The reason I recommend C over C++ is, as I said, poor design. C++ only overcomplicates things like object-oriented programming, things which would be much easier to learn in C#. C is also more low-level, requiring you to use malloc / free instead of new / delete, printf instead of cout << endl, structs instead of classes, and so forth.

I'm recommending C# for regular development, and C only for LEARNING low-level programming. C++ is such a hassle that there's no reason for a newbie programmer to use it over C#. C is a better language to learn how things work under the hood because it's much more exposed (e.g. there is no 'delete' keyword to automatically destruct an array of objects).

  • 0

...

Mono is an implementation of open standards just like gcc or clang. I don't know what you mean by "pure C#", as Microsoft's .NET itself is written in C++.

...

What part? As the CLI (JIT Compiler) is C++ and Assembly, but the framework itself is C#... You can see this using .NET Reflector or the .NET symbols when debugging in Visual Studio...

Also: http://stackoverflow.com/questions/1324919/what-language-is-net-framework-written-in

  • 0
I think you got it wrong. Due to the fact, that .NET and Java use OO and a whole lot of interface cruft for their containers' interfaces (opposed to C++'s container definition) you actually can't rely on the complexity of the containers in them - especially if you're using collections that are returned from foreign code. For example what does the List<XYZ> guarantee in terms of complexity in Java? Well nothing really, as it's an interface, List<XYZ> may actually be an array (class ArrayList) or it may be a linked list -> totally different complexities (and memory layouts -> access patterns) are involved here! You have no way of telling which one it is based on List<XYZ>. A similar thing happens in .NET?
If you specify a container type as IList<T> (in .NET), you are specifying that you don't care what the concrete type of container and its performance characteristics are! If you do care, then you should write LinkedList<T>, List<T>, etc., which are concrete types with documented complexities just like the concrete types std::list and std::vector.

The fact that collections in Java and .NET implement interfaces simply mean that it's possible to treat them as more generic types while ignoring their performance characteristics, not that this is necessarily what you want to do. So I don't really understand your point. I don't think the design of the .NET class library in general (can't speak for Java) makes it difficult to know what the concrete type of collections are; generally, when a method returns a container, it is a concrete type.

Just because you can, doesn't mean you should. Doing pointer stuff in C# is a sin :p.
Well, it's not idiomatic, but it enables some high-performance features to be done in C# like bitmap manipulation in Paint.Net or the like. At least C# makes it clear with all the syntactic evilness (unsafe, fixed, stackalloc, etc) that you'd better know what you're doing when you use pointers.

As for C vs C++ for the purpose of learning pointers and manual memory management, I think I'd side with Xinok on the issue; C is a simple and coherent language which can't be said of C++. How many different ways are there to create a pointer in C++11?

C-style (evil, deprecated, don't use! but wait all the standard library uses it...)

auto_ptr (bad, deprecated, don't use!)

reference (almost the same thing but not quite, if you can use it use it)

unique_ptr (expresses ownership of the resource - what happens when you copy it exactly? Stroustrup himself was confused on the issue at a recent talk)

shared_ptr (expresses shared ownership of the resource - but may lead into leaks because of reference counting cycles, for which there is...)

weak_ptr (breaks cycles of shared_ptr)

Ugh... what's a pointer again?

  • 0

What part? As the CLI (JIT Compiler) is C++ and Assembly, but the framework itself is C#... You can see this using .NET Reflector or the .NET symbols when debugging in Visual Studio...

Also: http://stackoverflow...work-written-in

Correct, I was over-generalizing. The point still stands that .NET is not "pure C#" in the sense of being purely written in C#.
  • 0

Correct, I was over-generalizing. The point still stands that .NET is not "pure C#" in the sense of being purely written in C#.

Agreed. I was merely offering clarification, but the base point is correct.

  • 0

The reason I recommend C over C++ is, as I said, poor design.

I honestly disagree! It may be true - to some extend - for C89 (aka ANSI-C), but IMHO any later standard is just an abomination?

C++ only overcomplicates things like object-oriented programming, things which would be much easier to learn in C#.

I disagree again! C++ is not about OO, C++ is about effective abstraction! The people that think that C++ is just about OO are those that actually are getting it wrong - just as those who think that OO means: "everything has to be a class/method"?

C++ is such a hassle

Actually it's easier to learn than C - provided you learn idiomatic C (which more or less requires not to learn C as C++ got all the features that make C good, yet avoids some of it's deadliest pitfalls via a stricter type system? Sure if you learn C and try to use C with Objects you're lost. People that follow that path are those that overuse new and delete - something that's rarely used in modern C+!

(e.g. there is no 'delete' keyword to automatically destruct an array of objects).

There's free? And as I said modern C++ does not rely on new/delete in usercode?

If you specify a container type as IList<T> (in .NET), you are specifying that you don't care what the concrete type of container and its performance characteristics are! If you do care, then you should write LinkedList<T>, List<T>, etc., which are concrete types with documented complexities just like the concrete types std::list and std::vector.

Well that doesn't work as the way of thinking - at least in the Java world - is that you should NEVER use the concrete type in the interface?

generally, when a method returns a container, it is a concrete type.

Nope, it's an implementation of an interface which is no concrete type for which you can rely on for complexity guaranties?

How many different ways are there to create a pointer in C++11?

It depends! (The beauty of options?) Do you mean raw pointers or smart pointers? (There's a reason for the distinction!)

C-style (evil, deprecated, don't use! but wait all the standard library uses it...)

Nope, if you know what you're doing they're perfectly valid - you shouldn't overuse them.

auto_ptr (bad, deprecated, don't use!)

Deprecated yes, but if you know it's limitations - which boils down to one fatal in certain situations - you may still use it. Whilst auto_ptr has it's problems it's still a tool that can be used in certain situations. Given the option, one should prefer unique_ptr?

reference (almost the same thing but not quite, if you can use it use it)

Actually references are more like aliases - but hey it all boils down to memory addresses anyways?

  • 0

unique_ptr (expresses ownership of the resource - what happens when you copy it exactly? Stroustrup himself was confused on the issue at a recent talk)

He is? (source??) Well let's look into the spec: Hey, unique_ptr is NOT COPYABLE, which makes sense as it's expressing sole ownership?

shared_ptr (expresses shared ownership of the resource - but may lead into leaks because of reference counting cycles, for which there is...)

weak_ptr (breaks cycles of shared_ptr)

So you're arguing we should use a tried and tested way to manage cyclic dependencies without having the burden of a garbage collector?

Ugh... what's a pointer again?

A memory address, every smart pointer you listed is there for a purpose. The purpose is simply: to simplify the memory management of the application! Compare it to C: you only have raw pointers. How do you free the following structure:


int * ptrs[1000];
[/CODE]

Every ptr in ptrs points to a random object in memory, it's possible (actually likely) that several pointers point to the same object.

For comparison in C++

[CODE]
std::array<std::shared_ptr<int>, 1000> ptrs;
[/CODE]

will be deleted automatically if it goes out of scope [RAII]?

  • 0
I wouldn't recommend using C# or dotnet outside of Windows. Its support is sketchy at best, and most Linux distributions are blacklisting it (Mono) due to precarious licensing issues. Furthermore, the proprietary Windows Forms also won't be available outside of Windows, so if you intend on writing a GUI application, you will have to use something else.

The most popular Linux distribution shipped with two Mono-based applications until just recently, and the reasons for replacing the apps with native ones were based on their own merits. Mono is used on several commercial projects including by large companies such as EA, has been actively developed for almost as long as Microsoft's .NET by a team of professionals, and for all the fear-mongering about Microsoft patents, after ten years Microsoft is, if anything, showing more openness towards open-source than ever, recently making ASP.NET open-source for instance.

You will have to use a cross-platform GUI toolkit for writing cross-platform applications regardless of language choice, so the point that WinForms (or WPF) isn't cross-platform is kinda moot. It's also inexact since Mono does implement Windows Forms (if poorly).

In fact, .NET is currently one of the best cross-platform solutions, especially for games: I don't what other environment allows you to target Windows, WP7, Xbox360, Mac OS, Linux, Android and iOS with the same code and that's exactly what XNA/MonoGame does.

  • 0

Well that doesn't work as the way of thinking - at least in the Java world - is that you should NEVER use the concrete type in the interface?

That's a blanket statement and I'm sure you can find plenty of counter-examples in the Java library itself, which I'm not familiar with - in .NET, off the top of my head, File.ReadAllLines returns an array of string, not an IEnumerable<string> or whatever. You don't want to use a concrete type if what you want is flexibility at the expense of not knowing the concrete type (and its performance characteristics); if you don't need the flexibility then why use anything else than a concrete type? That seems like an extreme design rule, and certainly not a limitation of the .NET (and probably not of the Java) library.
It depends! (The beauty of options?) Do you mean raw pointers or smart pointers? (There's a reaso
I understand why there are many options in C++, but what I'm arguing is that from the perspective of learning pointers, having all these options is counterproductive because it creates confusion.
He is? (source??) Well let's look into the spec: Hey, unique_ptr is NOT COPYABLE, which makes sense as it's expressing sole ownership?
http://channel9.msdn...sk-Us-Anything- at around 33:45. I spoke a bit quickly, Stroustrup was confused about passing a unique_ptr by value, not specifically copying it. Still, if the language designer is unsure about how his own feature works, how do you expect someone learning pointers to make sense of all that?
So you're arguing we should use a tried and tested way to manage cyclic dependencies without having the burden of a garbage collector?
Again, I'm just saying that all these options are confusing to someone learning pointers, and that they would be better served, for that purpose, with a much more simple language.
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • The Light of Life? We actually do glow till our Death, study finds by Sayan Sen Image by Rafael Rendon via Pexels A study by researchers at the University of Calgary has found that living organisms produce an extremely faint light known as ultraweak photon emission, and that this glow appears to drop significantly after death. The research was published in the Journal of Physical Chemistry in April 2025 and quickly drew widespread attention, leading to more than 200 news stories about the findings. Ultraweak photon emission (or UPE), sometimes called biophoton emission, refers to tiny amounts of light released by living cells as a result of normal biological activity. A photon is the basic particle of light, and researchers say every living system examined so far, including plants and animals, has been found to emit these photons. The glow is far too faint to be seen by the human eye. “I suppose it has a little to do with people being reminded of auras,” says Dr. Christoph Simon, PhD, one of the authors of the study and a professor in the Department of Physics and Astronomy in the Faculty of Science. “It is a fact that living beings glow. It’s a very weak glow, but it’s there and visible with very sensitive cameras.” According to the study, the light involved is extremely weak, ranging from 10 to 1,000 photons per square centimetre per second across a spectral range of 200 to 1,000 nanometres. For comparison, a nanometre is one-billionth of a metre and is commonly used to measure wavelengths of light. Detecting emissions at such low levels requires highly specialized equipment. To study the phenomenon, researchers used electron-multiplying charge-coupled device (EMCCD) and charge-coupled device (CCD) cameras. These imaging systems are designed to detect extremely small amounts of light, including individual photons, while minimizing background noise. The technology allowed researchers to capture signals that would otherwise be impossible to observe. The team worked with the Human Health Therapeutics Research Centre at the National Research Council of Canada (NRC) in Ottawa to examine photon emissions in mice. Researchers took two-hour exposure images of the animals before and after death and compared the results. “We saw that the level of light that they emit – this biophoton glow – is distinctly different between living and dead animals,” says Dr. Daniel Oblak, PhD, an associate professor in Physics and Astronomy and the corresponding author of the study. The images showed a clear decrease in photon emissions after death across the entire body of each mouse. According to the researchers, this provided direct evidence that living and dead tissue produce different levels of ultraweak photon emission. “It’s a very small amount and it’s, of course, very tricky to detect,” Oblak says. The study grew out of discussions between Simon, whose research interests include quantum biology, and Oblak, whose work focuses on detecting light for quantum communication experiments. Quantum biology is a field that explores whether processes described by quantum physics, which studies matter and energy at very small scales, may also play a role in living systems. “Since I work as a quantum physicist on light detection for quantum communication, I thought that experimentally we have a lot of the tools to be able to detect the light,” Oblak explains. The researchers also investigated UPE in plants and found that the light changed in response to stress. When plants were exposed to higher temperatures or physically injured, their photon emissions increased. Chemical treatments also affected the glow. Among the substances tested, the local anesthetic benzocaine produced the strongest emission response when applied to injured plant tissue. These findings suggest that ultraweak photon emission is closely linked to biochemical and metabolic activity inside living organisms. Metabolism refers to the chemical reactions that allow cells and organisms to stay alive and function. Because these reactions change when an organism experiences stress, injury or disease, researchers believe UPE may provide a way to monitor those changes. The researchers stress that the glow is a physical and biological phenomenon, not a metaphysical one. Oblak says more research is needed to understand exactly how the light is produced and what information it may reveal about the condition of living tissue. “We must understand what that is to figure out what’s happening,” he says. “If we can understand how that relates to certain influences on the body – stress, diseases – then that could be used as a diagnostic tool.” The researchers believe the technique could eventually help scientists study health and disease without invasive procedures. Because UPE can be measured without adding dyes, markers or labels, it may offer a way to monitor whether tissue is healthy, damaged or alive. In plants, it could help researchers better understand how organisms respond to injury, heat and other forms of stress. While the work is still in its early stages, the study demonstrates that ultraweak photon emission imaging can provide a non-invasive and label-free way to observe biological activity. Researchers say the approach could become a useful tool for studying vitality, stress responses and other important processes in both animals and plants. Source: University of Calgary, ACS publication This article was generated with some help from AI and reviewed by an editor. Under Section 107 of the Copyright Act 1976, this material is used for the purpose of news reporting. Fair use is a use permitted by copyright statute that might otherwise be infringing.
    • Damn, I loved this show back in the day.  
    • Rufus 4.15.2393 Beta 2 by Razvan Serea Rufus is a small utility that helps format and create bootable USB flash drives, such as USB keys/pendrives, memory sticks, etc. Despite its small size, Rufus provides everything you need! Oh, and Rufus is fast. For instance it's about twice as fast as UNetbootin, Universal USB Installer or Windows 7 USB download tool, on the creation of a Windows 7 USB installation drive from an ISO (with honorable mention to WiNToBootic for managing to keep up). It is also marginally faster on the creation of Linux bootable USBs from ISOs. A non-exhaustive list of Rufus supported ISOs is available here. It can be especially useful for cases where: you need to create USB installation media from bootable ISOs (Windows, Linux, UEFI, etc.) you need to work on a system that doesn't have an OS installed you need to flash a BIOS or other firmware from DOS you want to run a low-level utility Rufus 4.15.2393 Beta 2 changelog: Add RISC-V 64 support to UEFI:NTFS Improve the guards for using the "silent" option Improve the ability to cancel during write retries Improve progress reporting for compressed image extraction Fix unrestricted XML entity expansion and integer overflow in ezxml parser (courtesy of @esadowski4) [GHSA-55r2-34wg-8mv9] Fix "silent" Windows installation failing at 75% in most cases [#2960] Fix a crash during boot when using UEFI:NTFS on Snapdragon X based ARM64 platforms [#2934] Fix the first WUE option always being checked by default [#2965] Fix an infinite loop when using Windows ISOs that contain multiple WIMs Fix "Enable runtime UEFI media validation" checkbox not always being properly enabled Other WUE improvements/fixes for OneDrive removal and username validation (with thanks to @christian8641) [#2984, #2991] Download: Rufus 4.15 Beta 2 | 1.9 MB (Open Source) Links: Rufus Home Page | Project Page @GitHub | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Tixati 3.43 by Razvan Serea Tixati is a free and easy to use BitTorrent client featuring detailed views of all seed, peer, and file transfer properties. Also included are powerful bandwidth charting and throttling capabilities, and a full DHT implementation. Tixati is one of the most advanced and flexible BitTorrent clients available. And unlike many other clients, Tixati contains NO SPYWARE, NO ADS, and NO GIMMICKS. Tixati portable version is meant to run on a USB flash drive or other portable media. It stores all its configuration files in the same folder as the executable binary files, and all file paths are stored in a format relative to the program executable folder. It is important you do not delete the "tixati_portable_mode.txt" file within the executables folder. This file is what triggers Tixati to run in portable mode. (The executable binaries are actually the same as the standard edition binaries.) When running the portable edition from a USB flash drive, especially one that is formatted in FAT16/FAT32, you may experience some lag when initially loading a new transfer. This is because initializing and allocating large files on flash-based media consumes a greater amount of time and resources compared to a conventional hard-drive. Tixati has the following features: detailed views of all aspects of the swarm, including peers, pieces, files, and trackers support for magnet links, so no need to download .torrent files if a simple magnet-link is available super-efficient peer choking/unchoking algorithms ensure the fastest downloads peer connection encryption for added security full DHT (Distributed Hash Table) implementation for trackerless torrents, including detailed message traffic graphs and customizable event logging advanced bandwidth charting of overall traffic and per-transfer traffic, with separate classification of protocol and file bytes, and with separate classification of outbound traffic for trading and seeding highly flexible bandwidth throttling, including trading/seeding proportion adjustment and adjustable priority for individual transfers and peers bitfield graphs that show the completeness of all downloaded files, what pieces other peers have available, and the health of the overall swarm customizable event logging for each download, and individual event logs for all peers within the swarm expert local file management functions which allow you to move files to a different partition even while downloading is still in progress 100% compatible with the BitTorrent protocol Windows and Linux-GTK native versions available Tixati 3.43 changelog: Several major DHT improvements Added several screening heuristics to filter malicious DHT nodes, prevent Sybil floods Rewrote DHT search algorithms to add support for multi-path lookups Improved DHT logging, more details in several error messages Extended timeout lengths for outgoing queries over I2P Added incoming query / response per second to DHT table status display Updated Regex engine to PCRE2 Faster Search function, scans channel user profiles in much less time Fixed problems with file name parsing and date handling in RSS Faster and more accurate RSS filtering and episode number detection Several optimizations to global text processing functions, such as UTF-8 cleaning, line splitting, and token parsing Complete update of port-mapping UPNP/NAT-PMP engine, added PCP support, mapping over VPN support, and more Several refinements to default gateway detection on Windows / Android, which is used for port-mapping Support for IPv6 interface-scoped addresses, which is sometimes needed for IPv6 gateway detection and port mapping Full support for PCP port remapping, added backup zero-port query in case requested port is rejected New UPNP/NAT-PMP Monitor in Help > Diagnostics New reflected local port/location tracker that analyzes DHT replies to detect true port/location and NAT mapping type New TCP/UDP Ports monitor in Help > Diagnostics, with several statistic and information tabs, and a detailed event log Calculated/reflected local port is now used for port parameter in tracker queries and peer handshake Fixed several problems with Linux Wayland compatibility Completely replaced tray icon functions in Linux, new SNI implementation is now the default with GSI backup Implemented full DBus-Menu server to be used by new SNI tray icon implementation Replaced Linux tray balloon notification DBus client Rewrote auto-shutdown DBus interface for Linux Rewrote sleep inhibit DBus interface for Linux Dropped deprecated Linux dbus-glib dependencies Completely new Windows asynchronous file handling, now using IOCP model with several block-alignment optimizations Better handling of system network resets and interface down/up cycles Added option to fully clear configuration in Settings > Import/Export Remember last option checkboxes when using Import/Export Fixed minor I2P incoming connection routing problems Much faster I2P vanity host name finder Much faster channel user vanity key finder Raised length limit for torrent tracker remote failure messages to 120 from 64 Fixed problems setting download location on a torrent before the meta info is resolved Added location/MOC paths to category pane tooltips Several minor Web Interface fixes Refinements to static and scrolling ellipsizing layout routines Several fixes and improvements to single and multi-line text edit controls Many other minor fixes throughout the user interface A major overhaul of the Android framework has also been done: API target raised to 35, page alignment set to 16K Rewrote all inset processing routines Full rewrite of foreground service, application, and main activity objects New permission request routines Added multi-cast lock request before UPNP/LPDP discovery operations Fixed file permission and locking problems when loading .torrent from web browsers Fixed problems with Z-ordering of modal / non-modal and popup windows Fixed handling of back gesture on newer OS Added status bar icon adjustment based on status bar background color Added option in Settings > UI > Behavior to continue running in tray when task removed from recents App can be closed by swiping away notification Rewrote IME interface, fixed several problems with auto-correct, on-screen keyboard visibility, and cursor positioning Added full support for Android hardware mouse and keyboard function Added full tooltip implementation for Android hovering via mouse or other cursor device Full rewrite of popup menu widgets to better support hardware pointers and keyboard Added mouse cursor updating framework for Android hovering Added Settings > Import/Export to Android builds Added language file support to Android builds Download: Tixati 64-bit | Tixati 32-bit ~20.0 MB (Freeware) Download: Portable Tixati 3.43 | 114.0 MB Download: Tixati 3.43 for Linux | Android View: Tixati Website | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Firefox 152.0.1 by Razvan Serea Firefox is a fast, full-featured Web browser. It offers great security, privacy, and protection against viruses, spyware, malware, and it can also easily block pop-up windows. The key features that have made Firefox so popular are the simple and effective UI, browser speed and strong security capabilities. Firefox has complete features for browsing the Internet. It is very reliable and flexible due to its implemented security features, along with customization options. Firefox includes pop-up blocking, tab-browsing, integrated Google search, simplified privacy controls, a streamlined browser window that shows you more of the page than any other browser and a number of additional features that work with you to help you get the most out of your time online. Firefox key features Enhanced Tracking Protection (ETP) – Blocks trackers, cookies, cryptominers, and fingerprinters by default. Private Browsing Mode – Deletes history, cookies, and temporary files when closed. Lightweight & Fast Performance – Optimized memory usage with efficient page loading. Cross-Platform Sync – Sync bookmarks, passwords, history, and open tabs across devices. Customizable Interface – Toolbars, themes, and extensions can be tailored to user needs. Strong Privacy Controls – Options to manage cookies, permissions, and site data easily. Reader Mode – Strips away clutter for distraction-free reading. Pocket Integration – Save and read articles offline with Pocket built into Firefox. Picture-in-Picture (PiP) – Watch videos in a floating window while multitasking. Extensions & Add-ons – Vast library for productivity, security, and personalization. Built-in PDF Viewer – No need for external software to view PDFs. Firefox Monitor – Alerts users if their email is part of a known data breach. Multi-Account Containers – Isolate browsing sessions (e.g., work, personal, shopping). Performance & Resource Efficiency – Uses fewer system resources than some competitors. Open Source & Community-Driven – Transparent development with global contributions. Firefox 152.0.1 fixes: Fixed frequent crashes affecting users with Intel Raptor Lake processors. (Bug 2039575) Fixed an issue on macOS where choosing a PDF option, such as "Save as PDF", from the system print dialog would send the job to your printer instead of saving a file. (Bug 2047850) Download: Firefox 64-bit | Firefox 32-bit | ARM64 | ~70.0 MB (Freeware) Download: Firefox for MacOS | 146.0 MB View: Firefox Home Page | Release Notes Get alerted to all of our Software updates on Twitter at @NeowinSoftware
  • Recent Achievements

    • One Year In
      hhgygy earned a badge
      One Year In
    • One Month Later
      AMV earned a badge
      One Month Later
    • Week One Done
      AMV earned a badge
      Week One Done
    • Collaborator
      ryansurfer98 went up a rank
      Collaborator
    • One Month Later
      Eurosoft10 earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      519
    2. 2
      +Edouard
      172
    3. 3
      PsYcHoKiLLa
      78
    4. 4
      Steven P.
      73
    5. 5
      Michael Scrip
      71
  • Tell a friend

    Love Neowin? Tell a friend!